标签: go idioms channels
制作人用某些值填充频道并关闭它。 在消费者方面,我想将所有值加起来并将循环留在最后。我的解决方案如下:
total := 0 for { v, ok := <- ch if !ok { break } total += v }
还有更优雅的方式吗?
答案 0 :(得分:10)
只要生产者关闭了频道,就可以使用for / range循环。
total := 0 for v := range ch { total += v }
播放:http://play.golang.org/p/cWcA57dnLC