golang 中的 select 关键字
select 是 golang 中的一个控制结构,类似于 switch. 每一个 case 都必须为一个通信操作,要么是发送要么是接受。select 随机选择一个可运行的 case, 如果没有 case 可以运行,便会阻塞,直到有 case 可以运行。一个默认的字句总是可以运行的。
1 | select { |
以下描述 select 语句的语法
- 每个
case都必须是一个通信 - 所有
channel表达式都会被求值 - 所有被发送的表达式都会被求值
- 如果任意某个通信可以执行,它就会执行;其他就会被忽略
- 如果有多个
case都可以运行,select会随机公平的选出一个执行。其他不会执行。
否则- 如果有
default子句,则执行该语句 - 如果没有
default子句,select将阻塞,直到某个通信可以执行;channel 或者值不会被重复求值
- 如果有
示例
1 | package main |