你能用Golang反射初始化一个指针变量吗?

时间:2015-12-07 23:09:16

标签: go

假设

type A struct {
   A1 int
}
var a *A

我们可以初始化" a"与反思? reflect.ValueOf(a).Type()。Elem()给出类型,但它似乎是reflect.ValueOf(a).Elem()是零值,不可寻址。

1 个答案:

答案 0 :(得分:3)

获取变量a的可寻址值:

var a *A
va := reflect.ValueOf(&a).Elem()

分配新的A

v := reflect.New(va.Type().Elem())

将指向新分配的A的指针分配给变量a

va.Set(v)

playground example

因为Go按值传递参数,所以无法从a开始将值设置为relfect.ValueOf(a)