我正在阅读有关go运行时的代码。在chan.go中 我不明白。
const (
maxAlign = 8
hchanSize = unsafe.Sizeof(hchan{}) + uintptr(-int(unsafe.Sizeof(hchan{}))&(maxAlign-1))
)
“ uintptr”意味着“-”是什么意思? 谢谢。
答案 0 :(得分:0)
“-”是减号。它执行hchanSize结构的大小的一元否定。整个表达式都进行了一些位操作,以将大小四舍五入到下一个更大的8的倍数。
我不确定为什么要知道这一点,但是如果您了解&和2的补码算法之类的位运算,则可以使用不同的值进行处理。例如,尝试使用9代替unsafe.Sizeof(hchan),然后将其舍入为16。