一,代码:
// 入口函数
func main() {//无缓冲的channelch:=make(chan int)go func() {//<-chfor i:=1; i<=5; i++ {time.Sleep(time.Millisecond)fmt.Println(i)}ch <- 0 //子协程结束前,向channel写入0}()go func() {for i:=1; i<=5; i++ {time.Sleep(time.Millisecond)fmt.Println(i*10)}ch <- 0 //子协程结束前,向channel写入0}()//主协程中,尝试从channel读取2个元素for i:=0;i<2;i++ {<-ch}
}
二,说明:
在主协程中,无法从channel对象中读取到数据时,会进入阻塞状态
三,运行效果:
$ go run main.go
1
10
20
2
3
30
40
4
5
50