小白教程
所有教程
关于
Search
172.70.130.241
172.70.130.241
参数设置
贡献
退出
操作
编辑
移动
保护
信息
历史
删除
查看“Go select statement”的源代码
本页内容
上一节:
Go_switch_statement
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{DISPLAYTITLE:select 语句}}[[Category:go decision making|5]] = Go 语言 select 语句 = [[go decision making|Go 语言条件语句]] select 是 Go 中的一个控制结构,类似于用于通信的 switch 语句。每个 case 必须是一个通信操作,要么是发送要么是接收。 select 随机执行一个可运行的 case。如果没有 case 可运行,它将阻塞,直到有 case 可运行。一个默认的子句应该总是可运行的。 === 语法 === Go 编程语言中 select 语句的语法如下: <sample title="" desc="" lang="go" hererun="1"> select { case communication clause : statement(s); case communication clause : statement(s); /* 你可以定义任意数量的 case */ default : /* 可选 */ statement(s); } </sample> 以下描述了 select 语句的语法: * 每个 case 都必须是一个通信 * 所有 channel 表达式都会被求值 * 所有被发送的表达式都会被求值 * 如果任意某个通信可以进行,它就执行,其他被忽略。 * 如果有多个 case 都可以运行,Select 会随机公平地选出一个执行。其他不会执行。 否则: *# 如果有 default 子句,则执行该语句。 *# 如果没有 default 子句,select 将阻塞,直到某个通信可以运行;Go 不会重新对 channel 或值进行求值。 == select 语句应用演示: <sample title="" desc="" lang="go" hererun="1"> package main import "fmt" func main() { var c1, c2, c3 chan int var i1, i2 int select { case i1 = <-c1: fmt.Printf("received ", i1, " from c1\n") case c2 <- i2: fmt.Printf("sent ", i2, " to c2\n") case i3, ok := (<-c3): // same as: i3, ok := <-c3 if ok { fmt.Printf("received ", i3, " from c3\n") } else { fmt.Printf("c3 is closed\n") } default: fmt.Printf("no communication\n") } } </sample> 以上代码执行结果为: <pre> no communication </pre> [[go decision making|Go 语言条件语句]]
返回至“
Go select statement
”。
上一节:
Go_switch_statement