在接口内寻址值
为了理解为什么获取存储在接口中的值的地址是不可行的,这一点至关重要深入研究接口变量的本质。本质上,接口值由两个部分组成:
需要注意的两个关键方面:
考虑以下代码片段:
<code class="go">var v interface{} v = int(42) p := GetPointerToInterfaceValue(&v) // a pointer to an integer holding 42 v = &SomeStruct{...}</code>
在这种情况下,先前保存整数的存储被重新用于存储指针。因此,取消引用 *p 现在会生成指针的数字表示形式。
为了防止损害类型系统,Go 有意限制这种类型的指针检索(除了不安全的包使用之外)。
替代解决方案
如果您的要求是访问存储在列表中的结构体指针,请考虑以下替代方案:
以上是为什么无法获取 Go 接口中存储的值的地址?的详细内容。更多信息请关注PHP中文网其他相关文章!