|
1
8
如果不处理作为goroutine启动的函数的返回值,它们将被丢弃。看见 What happens to return value from goroutine . 您可以使用一个切片来收集结果,其中每个goroutine可以接收将结果放入的索引,或者接收元素的地址。看见 Can I concurrently write different slice elements . 请注意,如果使用此选项,则必须预先分配切片,并且只能写入属于goroutine的元素,不能“触摸”其他元素,也不能附加到切片。 或者您可以使用一个通道,goroutine在该通道上发送包含其处理的项的索引或ID的值,以便收集goroutine可以识别或排序它们。看见 How to collect values from N goroutines executed in a specific order? Close multiple goroutine if an error occurs in one in go 下面是一个使用频道时的示例。请注意,此处不需要waitgroup,因为我们知道,我们希望通道上的值与我们启动的goroutine数量相同。
输出(在屏幕上尝试ot) Go Playground
|
|
|
2
4
结果如下所示:
|
|
|
Jordan · 处理条件异步函数返回数据的惯用方法是什么? 8 年前 |
|
|
user5682282 · 从其他线程读取值 8 年前 |
|
|
Omer Akhter · 通过通道发送指针 8 年前 |
|
|
kmad1729 · goroutine阻塞和非阻塞使用 8 年前 |
|
|
Cadel Watson · 在一定时间内从goroutine接收值 8 年前 |
|
|
Terry Pang · 当涉及多个通道时,select如何工作? 8 年前 |
|
|
mrjd · Goroutine不运行 8 年前 |