您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

在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形式参数。这样编写时,编译器会遇到更多错误。幸福!

Go 2022/1/1 18:17:28 有627人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶