我有一个循环抛出多个 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。
获得函数结果的最佳方法是什么?