var wg sync.WaitGroup func test(num int) { defer wg.Done() for i := 0; i <= 5; i++ { fmt.Printf("协程(%v)第%v条数据\n", num, i) } } func main() { for i := 1; i <= 5; i++ { wg.Add(1) go test(i) } wg.Wait() fmt.Println("关闭主线程") } //协程(5)第0条数据 //协程(5)第1条数据 //协程(5)第2条数据 //协程(5)第3条数据 //协程(5)第4条数据 //协程(5)第5条数据 //协程(4)第0条数据 //协程(4)第1条数据 //协程(4)第2条数据 //协程(4)第3条数据 //协程(4)第4条数据 //协程(4)第5条数据 //协程(2)第0条数据 //协程(2)第1条数据 //协程(2)第2条数据 //协程(2)第3条数据 //协程(2)第4条数据 //协程(2)第5条数据 //协程(3)第0条数据 //协程(3)第1条数据 //协程(3)第2条数据 //协程(3)第3条数据 //协程(3)第4条数据 //协程(3)第5条数据 //协程(1)第0条数据 //协程(1)第1条数据 //协程(1)第2条数据 //协程(1)第3条数据 //协程(1)第4条数据 //协程(1)第5条数据 //关闭主线程