猿问

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

我正在阅读有关运行时的代码。在 chan.go 中,我无法理解这一点。

const (
    maxAlign  = 8
    hchanSize = unsafe.Sizeof(hchan{}) + uintptr(-int(unsafe.Sizeof(hchan{}))&(maxAlign-1))
)

“uintptr”后面的“-”是什么意思?谢谢。


富国沪深
浏览 91回答 1
1回答

萧十郎

“-”是减号。它执行 hchanSize 结构大小的一元取反。整个表达式进行了一些位操作,以将大小四舍五入为下一个更大的 8 倍数。我不确定你为什么想知道这个,但如果你了解像 & 和 2 的补码算术这样的位操作,你可以使用不同的值来处理它。例如,尝试使用 9 代替 unsafe.Sizeof(hchan) 并查看它四舍五入为 16。
随时随地看视频慕课网APP

相关分类

Go
我要回答