2 回答

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
您不能同時(shí)在多個(gè)頻道上進(jìn)行選擇。您可以做的是實(shí)現(xiàn)一個(gè)扇入模式,以合并來(lái)自多個(gè)渠道的值。
基于您的代碼的粗略示例可能如下所示:
func collect(ret chan []int, chans ...<-chan int) {
ints := make([]int, len(chans))
for i, c := range chans {
ints[i] = <-c
}
ret <- ints
}
func mynet(a, b, c, d <-chan int, res chan<- int) {
set1 := make(chan []int)
set2 := make(chan []int)
go collect(set1, a, b)
go collect(set2, c, d)
for {
select {
case vs := <-set1:
res <- vs[0] + vs[1]
case vs := <-set2:
res <- vs[0] + vs[1]
}
}
}
- 2 回答
- 0 關(guān)注
- 185 瀏覽
添加回答
舉報(bào)