使用channel同步
package mainimport ( "fmt")func printNumber(num int, c chan struct{}) { fmt.Println(num) c <- struct{}{}}func main() { sign := make(chan struct{}, 10) for i:=0;i<10;i++ { go printNumber(i, sign) } for i:=0;i<10;i++{ <-sign } fmt.Println("Done.")}
使用sync.WaitGroup
package mainimport ( "fmt" "sync")func printNumber(num int, callback func()) { fmt.Println(num) callback()}func main() { var wg sync.WaitGroup wg.Add(10) for i:=0;i<10;i++ { go printNumber(i, wg.Done) } wg.Wait() fmt.Println("Done.")}