以这两个片段为例
使用父作用域中的 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 返回给调用者,并且这些值将仅从该通道消耗。
FFIVE
相关分类