gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 02:33:45 29 4
gpt4 key购买 nike

假设

type A struct {
A1 int
}
var a *A

我们可以用反射来初始化“a”吗? reflect.ValueOf(a).Type().Elem() 给出类型,但似乎 reflect.ValueOf(a).Elem() 是零值且不可寻址。

最佳答案

获取变量 a 的可寻址值:

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

分配一个新的A:

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

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

va.Set(v)

playground example

因为 Go 按值传递参数,所以不可能将值设置为以 relfect.ValueOf(a) 开头的 a

关于go - 你能用 Golang 反射初始化一个指针变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34145072/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com