Golang 通过 sql.NullString 设置 reflect.Value

如何通过 inData.SourceId(类型为 String)设置 item.SourceId(类型为 sql.NullString)?红色方块的代码不知道怎么写

http://img1.mukewang.com/6406f974000186d118500847.jpg

reflect.ValueOf(&foo).Elem().Field(0).SetInt(321)Using reflect 中发现,如何设置结构字段的值?. 有类似的东西SetIntsql.NullString

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() != ""}


    }

}


一只甜甜圈
浏览 188回答 1
1回答

神不在的星期二

if itemType == "sql.NullString" {     itemValue.Set(reflect.ValueOf(sql.NullString{String: inDataValue.String(), Valid: inDataValue.String() != ""})) }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go