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

chan.go 中的“hchanSize”是什么意思

chan.go 中的“hchanSize”是什么意思

Go
富国沪深 2023-06-05 13:25:52
我正在阅读有关运行时的代码。在 chan.go 中,我无法理解这一点。const (     maxAlign  = 8     hchanSize = unsafe.Sizeof(hchan{}) + uintptr(-int(unsafe.Sizeof(hchan{}))&(maxAlign-1)) )“uintptr”后面的“-”是什么意思?谢谢。
查看完整描述

1 回答

?
萧十郎

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

“-”是减号。它执行 hchanSize 结构大小的一元取反。整个表达式进行了一些位操作,以将大小四舍五入为下一个更大的 8 倍数。

我不确定你为什么想知道这个,但如果你了解像 & 和 2 的补码算术这样的位操作,你可以使用不同的值来处理它。例如,尝试使用 9 代替 unsafe.Sizeof(hchan) 并查看它四舍五入为 16。


查看完整回答
反对 回复 2023-06-05
  • 1 回答
  • 0 关注
  • 89 浏览
慕课专栏
更多

添加回答

举报

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