我尝试通过反射将值设置为结构字段(指针字段),但失败了。
- 我得到了一个结构字段的名称,所以使用 FieldByName 来获取该字段
- 该字段是一个指针。
- 我尝试使用 FieldByName().Set FieldByName().SetPointer 来设置值。
type t struct {
b *int
}
func main() {
t := new(ts)
a := new(int)
ss := reflect.ValueOf(t).FieldByName("b").Set(a)
}
type t struct {
b *int
}
func main() {
t := new(ts)
a := new(int)
ss := reflect.ValueOf(t).FieldByName("b").SetPointer(a)
}
第一个代码:=======> ./test.go:14:50: 不能在 reflect.ValueOf(t).FieldByName("b") 的参数中使用 a (type *int) 作为类型 reflect.Value .Set ./test.go:14:50: reflect.ValueOf(t).FieldByName("b").Set(a) 用作值
第二个代码:=======> ./test.go:14:57: 不能使用 a (type *int) 作为类型 unsafe.Pointer 在参数中以 reflect.ValueOf(t).FieldByName("b") .SetPointer ./test.go:14:57: reflect.ValueOf(t).FieldByName("b").SetPointer(a) 用作值
我想使用反射使指针字段(名称“b”)分配一个空间并设置一个值。