操作规则 #
| 操作 | nil | 已关闭的 channel | 未关闭有缓冲区的 channel | 未关闭无缓冲区的 channel |
|---|---|---|---|---|
| 关闭 | panic | panic | 成功关闭,然后可以读取缓冲区的值,读取完之后,继续读取到的是 channel 类型的默认值 | 成功关闭,之后读取到的是 channel 类型的默认值 |
| 接收 | 阻塞 | 不阻塞,读取到的是 channel 类型的默认值 | 不阻塞,正常读取值 | 阻塞 |
| 发送 | 阻塞 | panic | 不阻塞,正常写入值 | 阻塞 |
编译规则 #
| 操作 | ||
|---|---|---|
| 接收 | 只写 channel | 编译错误 |
| 发送 | 只读 channel | 编译错误 |
| 关闭 | 只读 channel | 编译错误 |