您可以使用Golang反射来初始化指针变量吗?

Suppose

type A struct {
   A1 int
}
var a *A

can we initialise "a" with reflect? reflect.ValueOf(a).Type().Elem() gives the type but it seems reflect.ValueOf(a).Elem() is the zero Value and not addressable.

Get addressable value for variable a:

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

Allocate a new A:

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

Assign the pointer to newly allocated A to the variable a:

va.Set(v)

playground example

Because Go passes arguments by value, it is not possible to set a value to a starting with relfect.ValueOf(a).