gpt4 book ai didi

go - 对接口(interface)类型的设置值使用反射

转载 作者:IT王子 更新时间:2023-10-29 01:44:19 25 4
gpt4 key购买 nike

我有一个接口(interface)类型值的映射。我还想使用这个映射键,val 来改变另一个 func 中的值。

    func main(){
ValueForUpdate := make(map[string]interface{})
ValueForUpdate["DeliveryCount"] = 2 //type int
ValueForUpdate["BulkId"] = "100200300" //type string

UpdateSendTBL(ValueForUpdate)
}

func UpdateSendTBL(keyNewVal map[string]interface{}){
get := // some data
rowValue := reflect.ValueOf(get).Elem()
for key, val := range keyNewVal {
fieldValue := rowValue.FieldByName(key)
if fieldValue.Type().String() == "string" {
fieldValue.SetString(val)
}else if fieldValue.Type().String() == "int"{
fieldValue.SetInt(val)
}

}
}

但是这个错误:

cannot use val (type interface {}) as type int64 in argument to fieldValue.SetInt: need type assertion

cannot use val (type interface {}) as type string in argument to fieldValue.SetString: need type assertion

最佳答案

需要使用类型断言,修改代码如下:

    if fieldValue.Type().String() == "string" {
fieldValue.SetString(val.(string))
}else if fieldValue.Type().String() == "int"{
fieldValue.SetInt(val.(int64))
}

关于go - 对接口(interface)类型的设置值使用反射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50386888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com