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

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