为了账号安全,请及时绑定邮箱和手机立即绑定

go 例程运行时如何从通道读取

go 例程运行时如何从通道读取

Go
喵喔喔 2022-05-18 09:45:35
我正在寻找启动未知数量的 goroutines。在此示例中添加到number频道。然后在messages频道滚动时从频道中读取消息。当我希望在此代码中看到所有 100 条消息时,为什么我只看到一条消息?如何查看添加的所有号码的消息?package mainimport (    "fmt")func Run(numbers chan int, messages chan string) {    stuff := <-numbers    messages <- fmt.Sprintf("Ran %d", stuff)}func main() {    var numbers = make(chan int)    var messages = make(chan string)    go Run(numbers, messages)    for i := 0; i < 100; i++ {        go func(i int) { numbers <-i }(i)     }    msg := <-messages    fmt.Println(msg)}
查看完整描述

1 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

因为Run从 读取一条消息numbers,向 写入一条消息messages,然后终止。试试这个:



func Run(numbers chan int, messages chan string) {

    for stuff := range numbers {

       messages <- fmt.Sprintf("Ran %d", stuff)

    }

}

这将一直运行到numbers关闭。


查看完整回答
反对 回复 2022-05-18
  • 1 回答
  • 0 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号