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

怎么听N个频道?(动态选择语句)

怎么听N个频道?(动态选择语句)

Go
蝴蝶刀刀 2021-06-29 18:48:11
要开始执行两个 goroutine 的无限循环,我可以使用以下代码:收到 msg 后,它将启动一个新的 goroutine 并永远继续下去。c1 := make(chan string)c2 := make(chan string)go DoStuff(c1, 5)go DoStuff(c2, 2)for ; true;  {    select {    case msg1 := <-c1:        fmt.Println("received ", msg1)        go DoStuff(c1, 1)    case msg2 := <-c2:        fmt.Println("received ", msg2)        go DoStuff(c2, 9)    }}我现在希望对 N 个 goroutine 具有相同的行为,但是在这种情况下 select 语句将如何显示?这是我开始使用的代码位,但我很困惑如何编写 select 语句numChans := 2//I keep the channels in this slice, and want to "loop" over them in the select statemntvar chans = [] chan string{}for i:=0;i<numChans;i++{    tmp := make(chan string);    chans = append(chans, tmp);    go DoStuff(tmp, i + 1)//How shall the select statment be coded for this case?  for ; true;  {    select {    case msg1 := <-c1:        fmt.Println("received ", msg1)        go DoStuff(c1, 1)    case msg2 := <-c2:        fmt.Println("received ", msg2)        go DoStuff(c2, 9)    }}
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 201 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信