Jager / channel注意事项

Created Tue, 03 Aug 2021 00:00:00 +0000 Modified Tue, 07 May 2024 14:11:16 +0800
281 Words

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

channel不同状态的操作结果:

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