通过 Select 语句通信通道
要在通道之间转发结果,你可能会遇到这样的代码:
for { select { ... case ch2 <- <-ch1: ... } }
此设计提出了有关 select 如何在接收和发送上进行操作的问题
接收或发送,还是两者?
与单独选择任一操作相反,select 语句评估整个操作,包括接收(<-ch1 ) 和发送 (ch2 <-) 操作,进入选择后。这意味着:
case ch2 <- <-ch1:
从 ch1 接收时将立即阻塞,然后 select 将确定是否继续在 ch2 上发送或选择不同的情况。
本质上, select 将上述情况视为:
case ch2 <- <something>:
其中
副作用
此设计有一个副作用:如果未选择具有嵌套接收 (
以上是Go 的 select 语句如何处理同时接收和发送操作?的详细内容。更多信息请关注PHP中文网其他相关文章!