选择是GO中的控制结构。选择语句与Switch语句相似,但是SELECT将随机执行运行案例。如果没有案例,它将被阻止,直到可以运行为止。
SELECT是Golang在语言级别提供的多通路重用机制。它可以检测到多个通道是否准备就绪(也就是说,是否可以读取或写入),这非常方便使用。
Select语句的语法结构与Switch语句相似。也有案例语句和默认语句:
阐明:
示例代码:
操作结果:
它可能会执行第一种情况,打印100或执行第二种情况,打印200。(运行几次,结果不同)
选择语句与时代包和陈相关功能结合在一起
示例代码:
操作结果:
程序过程转移到选定的案例块。
源代码包定义了指示案例语句的数据结构:
SCASE.C是由当前案例语句操作的频道指针,它还表明案例语句只能操作一个频道。Scase.kind代表案例的类型,该类型被分为阅读频道,写作通道和默认值。这三种类型由常数定义:
scase.elem表示缓冲区地址。与scase.kind不同,有不同的用途:
源代码软件包定义了选择案例的选择功能:
功能参数:
函数返回值:
SelectGo如下实现伪代码:
特殊说明:要读取频道,如果通道可能被其他Coroutines关闭,则必须成功,因为关闭的通道此时也可能返回零值。
原始:https://juejin.cn/post/7098568794745864222