以这两个片段为例
使用父作用域的 out chan
func Worker() {
out := make(chan int)
func() {
// write something to the channel
}()
return out
}
将 out chan 作为正式参数传递给闭包
func Worker() {
out := make(chan int)
func(out chan int) {
// write something to the channel
}(out)
return out
}
我知道将参数传递给闭包会创建一个副本,并且使用父作用域中的某些东西会使用引用,所以我想知道在通过副本传递的情况下它在内部是如何工作的。是否有两个通道,一个在父范围内,另一个副本传递给闭包,当闭包中的副本写入该值的副本时,该值的副本也在父范围的通道中创建?因为我们将父作用域中的 out chan 返回给调用者,并且这些值将仅从该通道中使用。
BIG阳
相关分类