专门为了操作通道而存在的语句
- 包含默认分支和候选分支
- 候选分支的表达式中必须包含通道发送表达式或者通道接收表达式
- 候选分支中的case表达式都会在该语句执行开始时先被求值,并且求值的顺序是依从代码编写的顺序从上到下的
- 对于每一个case表达式,如果其中的发送表达式或者接收表达式在被求值时,相应的操作正处于阻塞状态,那么对该case表达式的求值就是不成功的。在这种情况下,我们可以说,这个case表达式所在的候选分支是不满足选择条件的
- 当所有的case处于阻塞状态才会执行default case
- 当多个case处于可用状态
- 当所有的候选分支都不满足选择条件,这时没有默认分支,那么select语句就会立即进入阻塞状态,直到至少有一个候选分支满足选择条件为止
- 当有多个case 可以执行,用一种伪随机的算法 在这些分支中选择一个并执行