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

时间:2019-01-30 03:51:36

标签: go

我正在阅读有关go运行时的代码。在chan.go中 我不明白。

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

“ uintptr”意味着“-”是什么意思? 谢谢。

1 个答案:

答案 0 :(得分:0)

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

我不确定为什么要知道这一点,但是如果您了解&和2的补码算法之类的位运算,则可以使用不同的值进行处理。例如,尝试使用9代替unsafe.Sizeof(hchan),然后将其舍入为16。