Content #
Go语言中为了让主goroutine等待其他goroutine结束,最简单粗暴的办法就是让主 goroutine“小睡”一会儿:
for i := 0; i < 10; i++ {
go func() {
fmt.Println(i)
}()
}
time.Sleep(time.Millisecond * 500)
但等待的时间很难确定。更好的做法是用通道来解决,请写出该解决方案。
func main() {
num := 10
sign := make(chan struct{}, num)
for i := 0; i < num; i++ {
go func() {
fmt.Println(i)
sign <- struct{}{}
}()
}
for j := 0; j < num; j++ {
<-sign
}
}