【发布时间】:2015-12-08 10:24:47
【问题描述】:
假设
type A struct {
A1 int
}
var a *A
我们可以用反射初始化“a”吗? reflect.ValueOf(a).Type().Elem() 给出了类型,但似乎 reflect.ValueOf(a).Elem() 是零值并且不可寻址。
【问题讨论】:
标签: go
假设
type A struct {
A1 int
}
var a *A
我们可以用反射初始化“a”吗? reflect.ValueOf(a).Type().Elem() 给出了类型,但似乎 reflect.ValueOf(a).Elem() 是零值并且不可寻址。
【问题讨论】:
标签: go
获取变量a的可寻址值:
var a *A
va := reflect.ValueOf(&a).Elem()
分配一个新的A:
v := reflect.New(va.Type().Elem())
将指向新分配的A的指针赋值给变量a:
va.Set(v)
由于 Go 按值传递参数,因此无法将值设置为以 relfect.ValueOf(a) 开头的 a。
【讨论】:
reflect.ValueOf(a) 设置值a。