猿问

为什么 sync.WaitGroup、sync.Mutex 不引用通道、切片等类型?

如果 Waitgroups 和 Mutex 总是需要通过引用传递,我们是否可以将其设为引用类型(禁止使用它们作为值传递)?我的意思是有没有我们需要使用它们按值传递的用例?



白衣染霜花
浏览 78回答 1
1回答

哈士奇WWW

当您将任何参数作为值传递时,该值将被复制。这些参数的任何修改都将是局部的func。当func退出时,这些更改将消失。万一WaitGroup你Mutex不想这样,因为你想分享状态。如果所有修改都是本地的,您将无法同步任何内容,因为您将拥有许多具有不同状态的不同副本。一个有效的情况可能是您想要复制WaitGroupor Mutex,但这将是非常隐含的代码,并且其他开发人员很难理解/维护。
随时随地看视频慕课网APP

相关分类

Go
我要回答