设置结构字段,它是使用反射的指针

时间:2019-08-23 09:42:26

标签: go reflection

我的问题就像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

该如何解决?

0 个答案:

没有答案