golang-Channel注意事项

管道主要分为无缓冲(阻塞)管道、带缓冲的管道两种。

无缓冲(阻塞)管道

ch:=make(chan int)

无缓冲管道在发送时一定要有接收方在等待,否则会阻塞等待接收,接收时同理。

带缓冲的管道

ch:=make(chan int2)//创建容量为2的缓冲管道

管道写满时,再进行写入操作会阻塞等待接收。
管道为空时,再进行读取操作会阻塞等待写入。

Close规则

同一个channel不能被close两次。
channel关闭之后,只能进行读不能进行写。
关闭后,在读取完剩余的数据后,会持续读出零值。
是否读取完毕可以通过ok返回值进行判断

猜你喜欢

转载自blog.csdn.net/weixin_44866921/article/details/130294235