gpt4 book ai didi

dictionary - 如何将接口(interface){}转换为结构指针?

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

接口(interface)已经包含一个指向值的指针,在我的例子中它是一个结构,我需要从接口(interface){}中获取一个结构指针。

用例是 sync.Map,我将一个包含锁的结构放入映射中,使用 Load() 方法我可以读取 interface{} 值。我想得到指向原始结构的指针,所以我不复制锁。

另一种方法是将指向结构的指针添加到 Map,然后将其读回并将接口(interface){}转换为结构指针,但我很好奇是否可以实现第一种情况。

最佳答案

你不能那样做。如果在接口(interface)中“包装”一个非指针值,则只能使用 type assertion 从中获取非指针值。或 type switch .而且由于类型断言表达式不是 addressable ,你无法获取接口(interface)中包裹的“值”的地址。

如果您只有一个包装在接口(interface)中的值,您将无法获得指向包装在接口(interface)中的原始值的指针。为什么?因为包装在接口(interface)中的值可能只是一个副本,完全脱离了原来的东西。请在此处查看示例和解释:How can a slice contain itself?

请注意,即使您包装了一个非指针值,实际包装的值也可能是也可能不是指针(取决于值的大小),但这是实现细节,对您是隐藏的。当你提取值时,你当然会得到一个非指针。

关于dictionary - 如何将接口(interface){}转换为结构指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51379055/

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