Почему не sync.WaitGroup, sync.Mutex ссылочные типы, такие как канал, слайсы? - PullRequest
0 голосов
/ 17 ноября 2018

Если Waitgroups и Mutex всегда нужно передавать по ссылке всегда, разве мы не можем сделать это ссылочным типом (запретить использование их в качестве передачи по значению)? Я имею в виду, есть ли какой-то случай, когда нам нужно использовать их, передавая по значению?

1 Ответ

0 голосов
/ 17 ноября 2018

Когда вы передаете любой аргумент в качестве значения, значение будет скопировано.Любое изменение этих аргументов будет локальным func.Когда выйдет func, эти изменения пропадут.

В случае WaitGroup или Mutex вы этого не хотите, так как хотите поделиться состоянием.Если бы все модификации были локальными, вы не могли бы синхронизировать что-либо, так как у вас было бы много разных копий с разными состояниями.

Один допустимый случай мог бы состоять в том, что вы хотите скопировать WaitGroup илиMutex, но это был бы очень скрытый код, и другому разработчику было бы трудно его понять / поддерживать.

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