在Golang中同时从多个通道读取

在Golang中同时从多个通道读取,第1张

在Golang中同时从多个通道读取

根据您的要求,您可能需要为每次迭代读取 两个 通道(即某种“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形式参数。这样编写时,编译器会遇到更多错误。幸福!



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5170663.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-18
下一篇 2022-11-18

发表评论

登录后才能评论

评论列表(0条)

保存