var waitgroup sync.WaitGroup func main() { for index := 0; index < 3; index++ { waitgroup.Add(1) go run(index) //goroutine } waitgroup.Wait() //等待全部goroutine完成 fmt.Println("main end!") } func run(index int) { time.Sleep(time.Duration(index) * time.Second) fmt.Printf( "%d is going!\n", index) waitgroup.Done() } 返回結果 0 is going! 1 is going! 2 is going! main end!
使用注意事項
- WaitGroup不能保證多個 goroutine 執行次序
- WaitGroup沒法指定固定的goroutine數目