channel注意事项

channel注意事项

2021-08-03
go, channel

channel是go语言编程中必不可少的元素,但对不同状态的channel作read,write和close操作会有不同的结果, 稍有操作不当,将导致系统 panic,所以本文介绍了channel不同状态的操作结果

channel不同状态的操作结果: #

操作 channel状态 结果
Read nil 阻塞
打开且非空 输出值
打开但空 阻塞
关闭的 <默认值>, false
只写 编译错误
-
Write nil 阻塞
打开的但填满 阻塞
打开的且不满 写入值
关闭的 panic
只读 编译错误
-
close nil panic
打开且非空 关闭channel;读取成功,直到通道耗尽,然后读取产生的默认值
打开但空 关闭channel;读到生产者的默认值
关闭的 panic
只读 编译错误

大侠的赏赐,是我持续创作的动力,感谢!

微信公众号 赞赏码 赞赏码