Golang:golinkname将一个私有方法或者变量link到公有

1.项目目录如下:

 tree
.
├── go.mod
├── inner
│   └── inner.go
├── main
├── main.go
└── outer
    ├── 1.s
    └── outer.go

2. inner.go

(1)

这里必须要加注释:localname是私有方法名 ,后面是到link到的共有方法

//go:linkname localname [importpath.name]

(2)

这里也需要导入unsafe包 

3. outer.go

(1)

outer 包下需要一个 1.s文件,不然会报一个错

# link/outer
outer\outer.go:8:6: missing function body

(2)

必须导入私有方法的包

 4.main.go

这里的unsafe包必须导入

 5.总结:

go linkname可以让私有的方法或者变量link到公有资源中,源码中有一些方法没有方法体,可能是采用这种办法。

6.易错点:

unsafe包和这段注释一起使用

//go:linkname localname [importpath.name]

 可以在outer中写,也可以在inner中写,不能两个都写

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值