如何只得到最快的goroutine的结果。例如,我们有这个函数。func Add(num int)int{ return num+5}我们有这个功能。func compute(){ for i := 0; i < 5; i++ { go Add(i) }}我想得到首先完成的goroutine的结果。
1 回答

喵喵时光机
TA贡献1846条经验 获得超7个赞
使用 a 获得许多灌浆执行的第一个结果buffered channel
func Test(t *testing.T) {
ch := make(chan int, 1)
go func() {
for i := 0; i < 5; i++ {
go func(c chan<- int, i int) {
res := Add(i)
c <- res
}(ch, i)
}
}()
res := <-ch // blocking here, before get first result
//close(ch) - writing to close channel produce a panic
fmt.Println(res)
}
PLAYGROUND
- 1 回答
- 0 关注
- 142 浏览
添加回答
举报
0/150
提交
取消