要开始执行两个 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
提交
取消