我正在閱讀有關運行時的代碼。在 chan.go 中,我無法理解這一點。const (
maxAlign = 8
hchanSize = unsafe.Sizeof(hchan{}) + uintptr(-int(unsafe.Sizeof(hchan{}))&(maxAlign-1))
)“uintptr”后面的“-”是什么意思?謝謝。
1 回答

蕭十郎
TA貢獻1815條經驗 獲得超13個贊
“-”是減號。它執行 hchanSize 結構大小的一元取反。整個表達式進行了一些位操作,以將大小四舍五入為下一個更大的 8 倍數。
我不確定你為什么想知道這個,但如果你了解像 & 和 2 的補碼算術這樣的位操作,你可以使用不同的值來處理它。例如,嘗試使用 9 代替 unsafe.Sizeof(hchan) 并查看它四舍五入為 16。
- 1 回答
- 0 關注
- 137 瀏覽
添加回答
舉報
0/150
提交
取消