为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
侃侃无极 2021-04-13 17:15:55
处理go的功能时,我发现当使用'generic'interface {}类型时,不能强迫编译器控制是传递值还是指向值的指针参数。func f(o interface{}) {...}最明显的解决方案是使用以下修改:func f(o *interface{}) {...}尽管此步骤已成功编译,但我没有找到正确的步骤。因此,是否有任何方法可以声明我要传递任何指针?
查看完整描述

2 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

否。在编译时,interface{}空接口是任何类型。

所有类型都实现空接口:interface{} 接口类型


查看完整回答
反对 回复 2021-04-26
?
qq_笑_17

TA贡献1818条经验 获得超7个赞

您必须使用反射。


import "reflect"


func f(o interface{}) {

  if _, ok := reflect.Typeof(o).(*reflect.PtrType); !ok {

    panic("Not a pointer")

  }

  // ...

}

您也可以考虑unsafe.Pointer,但是类型信息将丢失。


查看完整回答
反对 回复 2021-04-26
  • 2 回答
  • 0 关注
  • 230 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信