获取指向reflect中存储的变量的指针,Golang中的值[已关闭]

9w11ddsr  于 2023-01-28  发布在  Go
关注(0)|答案(1)|浏览(154)

这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
4天前关闭。
Improve this question
也许这是问题很简单,但我已经花了一些时间,并没有能够找到任何好的解决方案(例如,我们有以下代码:

var someValue int = 10
v := reflect.ValueOf(someValue)
var v1 reflect.Value // should refer to &someValue, but with using of the "v" variable only

我知道最简单的解决方案是***v1:= reflect.ValueOf(& someValue)***或使用***reflect.New()***函数,但不幸的是,这在我的情况下不起作用。
只能使用"v"变量初始化"v1"变量。

svmlkihl

svmlkihl1#

调用reflect.ValueOf(someValue)时,向ValueOf传递someValue的副本。ValueOf的参数地址与调用站点上someValue的地址不同。
无论ValueOf返回什么,它都不可能知道原始someValue的地址,因此您想在这里实现的是不可能的。
你能做的最好的事情就是调用Value.Addr,它将返回一个reflect.Value,它表示传递给ValueOf的someValue的副本的地址:

var someValue int = 10
v := reflect.ValueOf(someValue)
v1 := v.Addr() // reflect.Value representing a *int pointing to a copy of someValue
var p1 *int = v1.Interface().(*int) // distinct from &someValue

相关问题