揭示选择语句中接收和发送操作的动态
当寻求转发通道结果时,许多人选择以下构造:
for { select { ... case ch2 <- (<-ch1): ... } }
检查这段代码会提出一个问题:正在评估选择操作的哪个方面,接收或发送操作?
Go 文档阐明了这一点:
接收操作的通道操作数以及发送语句的通道和右侧表达式在输入“select”语句时按源顺序仅计算一次。
这意味着在给定的示例中,立即评估表达式
实际上,此方法可以立即阻止从 ch1 接收, select 最终控制 ch2 上的后续发送。然而,值得注意的是,即使选择了替代情况,ch1 中的值仍然会被消耗和丢弃。
以上是在 Go `select` 语句中首先评估的是接收还是发送?的详细内容。更多信息请关注PHP中文网其他相关文章!