在单个 Case 语句中接收和发送
在 Go 中,可以在同一个 select case 语句中组合接收和发送操作,如以下代码片段所示:
for { select { ... case ch2 <- (<-ch1): ... } }
此代码旨在将通道 ch1 的结果转发到通道 ch2。然而,它提出了 select 语句选择哪个操作,从 ch1 接收还是发送到 ch2 的问题。
选择过程
如 Go 中所述文档中,输入 select 语句时:
给定代码的含义
在提供的示例中,会发生以下情况:
case ch2 <- (<-ch1):
因此,select 语句选择是否将接收到的值从 ch1 发送到 ch2 或处理不同的情况。
副作用
需要注意的是,即使最终没有选择来自 ch1 的接收操作,该值仍然会被消耗和丢弃。此行为可能很重要,在使用此模式时应予以考虑。
以上是'case ch2'中'select'选择接收还是发送的详细内容。更多信息请关注PHP中文网其他相关文章!