对不同状态的channel操作会出现的情况
目录
警告
本文最后更新于 2021-04-15,文中内容可能已过时。
对 channel Read 操作
channel 状态为 nil: 阻塞
|
|
channel 状态为 打开且非空: 输出值
|
|
channel 状态为 打开但空: 阻塞
|
|
channel 状态为 关闭: 输出 默认值 和 false
|
|
channel 状态为 只写: 编译错误
|
|
对 channel Write 操作
channel 状态为 nil: 阻塞
|
|
channel 状态为 打开且满: 阻塞
|
|
chanel 状态为 打开且不满: 写入值
|
|
channel 状态为 关闭: panic
|
|
channel 状态为只读: 编译错误
|
|
对 channel Close 操作
channel 状态为 nil: panic
|
|
channel 状态为 打开且非空: 先读取值,后默认值
|
|
channel 状态为 打开但空: 默认值
|
|
channel 状态为 关闭
|
|
channel 状态为 只读
|
|
总结
操作 | Channel状态 | 结果 |
---|---|---|
Read | nil | 阻塞 |
打开且非空 | 输出值 | |
打开但空 | 阻塞 | |
关闭 | 默认值, false | |
只写 | 编译错误 | |
Write | nil | 阻塞 |
打开且满 | 阻塞 | |
打开且不满 | 写入值 | |
关闭 | panic | |
状态为只读 | 编译错误 | |
Close | nil | panic |
打开且非空 | 先读取值,后默认值 | |
打开且空 | 默认值 | |
关闭 | panic | |
只读 | 编译错误 |