sync.WaitGroup 一个跨协程的计数器,主要用来等待一组协程的结束。

    1. package main
    2. import (
    3. "fmt"
    4. "sync"
    5. "time"
    6. )
    7. func main() {
    8. var wg sync.WaitGroup
    9. for i := 0; i < 10; i++ {
    10. wg.Add(1)
    11. go func(index int) {
    12. defer wg.Done()
    13. fmt.Println("goroutine:", index)
    14. time.Sleep(time.Millisecond)
    15. }(i)
    16. }
    17. fmt.Println("等待协程")
    18. wg.Wait()
    19. fmt.Println("所有协程已执行完毕")
    20. }

    image.png