go - 在 Go 中阅读直到 channel 结束

标签 go idioms channels

生产者用一些值填充 channel 并关闭它。 在消费者方面,我想将所有值相加并将循环留在最后。我的解决方案如下:

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

有没有更优雅的方式?

最佳答案

只要生产者关闭 channel ,for/range 循环就会起作用。

total := 0

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

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

关于go - 在 Go 中阅读直到 channel 结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19100252/

相关文章:

matlab - 戈朗 : how to read only specified columns from a tab delimited file?

http - 如何在执行响应中不需要的计算之前向客户端发送响应

haskell - 关于通过多个嵌套功能级别进行映射

c++ - 将构造函数参数变成模板参数

audio - 如何使用 Libav API 合并多个音频文件?

go - chanA <-chanB : send and receive value or send channel itself?

go - 通过消息关闭 Websocket 连接

sql - 在 golang 中使用准备好的语句时,是否总是需要延迟 stmt.close()?

c++ - 轻量级包装器 - 这是一个常见问题吗?如果是,它的名称是什么?

administrator - 如何在 Telegram 中找到我拥有的 channel ?