У меня есть карта со значением типа interface. Также я хочу использовать этот ключ карты, val для изменения значения в другой функции с отражением.
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)
}
}
}
но эта ошибка:
не может использовать val (интерфейс типа {}) в качестве типа int64 в аргументе для fieldValue.SetInt: необходимо утверждение типа
не может использовать val (интерфейс типа {}) в качестве строки типа в аргументе fieldValue.SetString: необходимо утверждение типа