select作用域switch类似,但是这个关键字是用于监听channel有关的IO操作,当IO操作发生时,触发selec的动作执行机制。
1.当有多个可执行的case,那么select将公平的随机选取一个case执行。
多个case可执行:多个case 通道可以 发送或接受数据
公平的随机:则是相对公平的去分配机制,根据具体情况来随机
选取一个case执行:每次都只会选择一个case执行,所以往往select都是配置for进行循环使用的
2.当所有的case对应的通道被阻塞 (数据已满被阻塞、通道已取不出数据被阻塞),如果定义了default项,则会执行default,如果没有,那么所有case被阻塞select也将被阻塞,等待至少有一个case通道可使用则会执行这个case