根据您的要求,您可能需要为每次迭代读取 两个 通道(即某种“zip”功能)
func main() { c1 := make(chan int) c2 := make(chan int) out := make(chan int) go func(in1, in2 <-chan int, out chan<- int) { for { sum := 0 select { case sum = <-in1: sum += <-in2 case sum = <-in2: sum += <-in1 } out <- sum } }(c1, c2, out)}
这将永远运行。我终止此类goroutine的首选方法是关闭输入通道。在这种情况下,您需要等待两者都关闭,然后
close(out)再终止。
提示:请注意使用定向通道作为goroutine形式参数。这样编写时,编译器会遇到更多错误。幸福!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)