在Go中读取直到通道结束

时间:2013-09-30 17:29:52

标签: go idioms channels

制作人用某些值填充频道并关闭它。 在消费者方面,我想将所有值加起来并将循环留在最后。我的解决方案如下:

total := 0
for {
    v, ok := <- ch
    if !ok { break }
    total += v
}

还有更优雅的方式吗?

1 个答案:

答案 0 :(得分:10)

只要生产者关闭了频道,就可以使用for / range循环。

total := 0

for v := range ch {
    total += v
}

播放:http://play.golang.org/p/cWcA57dnLC