【发布时间】:2018-08-05 06:42:46
【问题描述】:
我有一个循环抛出多个 go 例程,它们调用一个函数,该函数使 http 获取请求并计算和对象。
我想恢复所有这些例程的结果。 我尝试使用频道,但嘿是空的,即使我强制等待所有例程完成。
这是启动例程的代码:
func main() {
pairs := getPairs() //Returns an array of strings
c := make(chan result)
for _, product := range pairs {
go getScore(product.Symbol, 1, c)
}
fmt.Println(len(c))
time.Sleep(5000 * time.Millisecond)
fmt.Println(len(c))
}
在 getScore() 结束时我这样做了,c 是函数中通道的名称,res 是函数的结果
c <- res
通道的长度在两个打印中都是 0。
获得函数结果的最佳方法是什么?
【问题讨论】: