我的问题就像this one,但我的值是interface{}
。
假设我们具有这样的结构:
type User struct {
ID int
Email string
ResourceID *int
}
和一个用于设置输入结构值的函数。
func setFieldValue(s interface{}, fieldName string, value interface{}) {
v := reflect.ValueOf(s).Elem()
fieldVal := v.FieldByName(fieldName)
if fieldVal.Kind() == reflect.Ptr {
// Here is the problem
fieldVal.Set(reflect.ValueOf(&value))
} else {
fieldVal.Set(reflect.ValueOf(value))
}
}
很明显,如果我运行代码,则会收到以下错误:
panic: reflect.Set: value of type *interface {} is not assignable to type *int
这是操场上的代码:https://play.golang.org/p/VUoyRras8SD
该如何解决?