我正在阅读有关运行时的代码。在 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。
- 1 回答
- 0 关注
- 89 浏览
添加回答
举报
0/150
提交
取消