gpt4 book ai didi

go - 如何强制编译器控制值/值指针函数参数?

转载 作者:数据小太阳 更新时间:2023-10-29 03:32:09 25 4
gpt4 key购买 nike

处理 go 的函数时,我发现在使用“通用”接口(interface){}类型时,无法强制编译器控制我是传递值参数还是值指针参数。

func f(o interface{}) {
...
}

最明显的解决方案是使用以下修改:

func f(o *interface{}) {
...
}

虽然编译成功了,但我发现这一步不对。那么,有什么方法可以表明我想传递任何指针

最佳答案

你必须使用 reflection .

import "reflect"

func f(o interface{}) {
if _, ok := reflect.Typeof(o).(*reflect.PtrType); !ok {
panic("Not a pointer")
}
// ...
}

你也可以考虑 unsafe.Pointer , 但类型信息会丢失。

关于go - 如何强制编译器控制值/值指针函数参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3808454/

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