条件语句是编写程序的人通过指定一个或多个条件,并通过测试条件结果是否为 true 来决定是否执行指定语句,并在条件为 false 的情况再执行另外的语句。
Go没有三目运算符,所以不支持?:形式的条件判断。
if语句
由一个布尔表达式后紧跟一个或多个语句组成。
基本语法:
if 条件表达式{
执行代码块
}
执行代码块 说明:当条件表达式为ture时,就会执行{}的代码。 注意{}是必须有的,就算你只写一行代码。
另外需要注意的是,Go语言的条件表达式不能用()括起来,条件表达式和if之间用一个空格隔开就行。
if..else语句
if语句后可以使用可选的else语句,else语句中的表达式在布尔表达式为false时执行。
基本语法:
if 条件表达式{
执行代码块1
} else {
执行代码块2
}
if嵌套语句
你可以在if或else if语句中嵌入一个或多个if或else if语句。
基本语法:
if条件表达式{
if条件表达式{
} else {
}
}
说明:嵌套分支不宜过多,建议控制在3层内。
switch语句
- switch语向用于基于不同条件执行不同动作,每一个case分支都是唯一的,从上到下逐一测试,直到匹配为止。
- 匹配项后面也不需要再加break,执行完case就直接退出switch语句。
基本语法:
switch表达式{
case表达式1,表达式2, ... :
语句块1
case表达式3,表达式4, ... :
语句块2
//这里可以有多个case语句
default:
语句块
}
执行流程
select语句
select语句是和Go的管道channel有关,类似于通信型的switch语句
语法如下:
select { case communication clause : statement(s); case communication clause : statement(s); /* 你可以定义任意数量的 case */ default : /* 可选 */ statement(s); }
- 每个 case 都必须是一个通信
- 所有 channel 表达式都会被求值
- 所有被发送的表达式都会被求值
- 如果任意某个通信可以进行,它就执行,其他被忽略。
- 如果有多个 case 都可以运行,Select 会随机公平地选出一个执行。其他不会执行。 否则:
- 如果有 default 子句,则执行该语句。
- 如果没有 default 子句,select 将阻塞,直到某个通信可以运行;Go 不会重新对 channel 或值进行求值。