假设有这样一个结构体
type S struct {
a int64
B []string
c float64
}
a := S{1, []string{"abc", "cba"}, 3.14}
用反射可以轻松拿到每个字段的值
reflect.ValueOf(a).FieldByName("a")
reflect.ValueOf(a).FieldByName("B")
reflect.ValueOf(a).FieldByName("c")
但这样返回的类型是reflect.Value
如果想还原自身类型,还需进一步操作
reflect.ValueOf(a).FieldByName("B").Interface().([]string)
但是也有些限制,Interface()
方法仅可用于导出字段
所以S.a和S.c没有办法用这个方法还原