登录
首页 >  Golang >  Go问答

Golang使用reflect.Value来设置sql.NullString

来源:stackoverflow

时间:2024-02-09 23:24:14 404浏览 收藏

目前golang学习网上已经有很多关于Golang的文章了,自己在初次阅读这些文章中,也见识到了很多学习思路;那么本文《Golang使用reflect.Value来设置sql.NullString》,也希望能帮助到大家,如果阅读完后真的对你学习Golang有帮助,欢迎动动手指,评论留言并分享~

问题内容

如何通过 indata.sourceid(类型为 string) 设置 item.sourceid(类型为 sql.nullstring) ? 不知道红框里的代码怎么写

我在《使用反射,如何设置结构体字段的值?》中找到了 reflect.valueof(&foo).elem().field(0).setint(321)sql.nullstring 有类似 setint 的东西吗?

type InDataType struct {
        Id          string  
        SourceId    string
    }

    type ItemType struct {
        Id          string      
        SourceId    sql.NullString 
    }

setField(item, inData, "SourceId")


func setField(item interface{}, inData interface{}, fieldName string) {
    // t := reflect.TypeOf(inData)
    // fmt.Println(t)
    itemValue := reflect.ValueOf(item).Elem().FieldByName(fieldName)
    itemType := reflect.ValueOf(item).Elem().FieldByName(fieldName).Type().String()
    fmt.Println(itemType, ",", itemValue)

    inDataValue := reflect.ValueOf(inData).Elem().FieldByName(fieldName)
    inDataType := reflect.ValueOf(inData).Elem().FieldByName(fieldName).Type().String()
    fmt.Println(inDataType, ",", inDataValue)
    if itemType == "sql.NullString" {
        // itemValue = sql.NullString{String: inDataValue.Value().String(), Valid: inDataValue.String() != ""}

    }
}

正确答案


if itemType == "sql.NullString" {
    itemValue.Set(reflect.ValueOf(sql.NullString{String: inDataValue.String(), Valid: inDataValue.String() != ""}))
}

今天关于《Golang使用reflect.Value来设置sql.NullString》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>