Что означает «hchanSize» в chan.go - PullRequest
0 голосов
/ 30 января 2019

Я читаю код о времени выполнения go.В chan.go я не могу этого понять.

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

что такое поведение "-", что означает "uintptr"?Спасибо.

1 Ответ

0 голосов
/ 30 января 2019

«-» - знак минус.Он выполняет одинарное отрицание размера структуры hchanSize.Целое выражение выполняет немного битовых манипуляций, чтобы округлить размер до следующего большего кратного 8.

Я не уверен, почему вы хотите это знать, но если вы понимаете битовые операции, такие как & и 2's- арифметика дополнения позволяет работать с разными значениями.Например, попробуйте использовать 9 вместо unsafe.Sizeof (hchan) и убедитесь, что оно округляется до 16.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...