我在for循环中运行了一个goroutine:
func main(){
for _, i := range x{
go httpRequests(i, ch)
}
for i := range ch{
print i
}
}
func httpRequests(i, ch){
for _, x := range y{
go func(string x){
do something with i
ch <- result
}(x)
}
}
当我跑步时,它说所有的goroutines都睡着了。有什么建议吗?
答案 0 :(得分:2)
你开始了3个goroutines(go serviceReq(i, httpCh)
)传递一个频道。然后,您只能在该频道上收到一次(ch := (<-httpCh).serviceData
)。
而不是你应该在循环中收到:
for resp := range httpCh {
output = append(output, resp.serviceData)
}