若要等到多個 goroutine 執行完畢,可以使用等待組。 |
|
![]() ![]()
|
|
|
|
這是我們將在每個 goroutine 執行的函式。 |
|
睡眠,以模擬耗時的工作。 |
|
|
|
使用此 WaitGroup 來等待於此啟動的所有 goroutine 執行完畢。注意:如果明確將 WaitGroup 傳遞至函式,則應傳遞指標來執行。 |
|
啟動多個 goroutine,並為每個 goroutine 增加 WaitGroup 計數器。 |
|
將 worker 呼叫包覆在閉包中,以確保通知 WaitGroup 此 worker 已完成。如此一來,worker 本身不需知道與執行相關的並行處理原語。 |
|
等到 WaitGroup 計數器回到 0,表示所有 worker 已通知完成。 |
|
請注意,此方法沒有直接的方法可以從 worker 傳遞錯誤。對於更進階的使用案例,請考慮使用 errgroup 套件。 |
|
|
|
worker 的啟動與結束順序在每次呼叫時可能皆會不同。 |
下一個範例:速率限制。