想要等待多个协程完成,我们可以使用 wait group
每个协程都会运行该函数
睡眠一秒钟,以此来模拟耗时的任务
这个WaitGroup用于等待这里启动的所有协程完成。注意:如果WaitGroup显式传递到函数中,则应使用 指针
启动几个协程,并为其递增WaitGroup的计数器。
避免在每个协程闭包中重复利用相同的i值 更多细节可以参考 the FAQ
将worker调用包装在一个闭包中,可以确保通知WaitGroup此工作线程已完成。这样,worker线程本身就不必知道其执行中设计的并发原语。
阻塞,直到WaitGroup这种使用方式没有直观的办法传递来自worker的错误。更高级的用例,请参见errgroup package
每次运行,各个协程开启和完成的时间可能是不同的