// 两个goroutinue 中都有for 循环是因为,本次声明的是无缓冲的 管道
// 当第一个数据被放入管道中,只有被取走,才会放入第二个数据到管道
// 所以,两个goroutinue中 必须都要有 for循环 一放一取
// 如果只有一个有for 循环 那就会造成阻塞,之后主goroutinue 就会强行结束
var wg sync.WaitGroup
func main(){
//var a chan int
a := make(chan int)
wg.Add(1)
go func(wg *sync.WaitGroup) {
defer wg.Done()
for i := 0;i<= 10;i++{
a <- i
}
//a <- 1
}(&wg)
wg.Add(1)
go func(wg *sync.WaitGroup) {
defer wg.Done()
for i := 0;i<=10;i++{
result :=<- a
fmt.Println(result)
}
}(&wg)
fmt.Println("waiting for all goroutine ")
wg.Wait()
fmt.Println("All goroutines finished!")
}