流程控制
2022-02-06 大约 3 分钟
流程控制语句是用来控制程序中语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。
# 单分支语句
当条件表达式为true时,就会执行的代码。
语法:
if 条件表达式 {
// 逻辑代码
}
1
2
3
2
3
package main
import "fmt"
func main() {
var age int = 19
if age > 18 {
fmt.Println("小明今年满18岁了")
}
if count := 20; count < 30 {
fmt.Println("总数小于30")
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
相关信息
- 条件表达式的左右括号可以不写,也建议不写。
- if和表达式中间,一定要有空格。
- 在Golang中,{}是必须有的,就算你只写一行代码。
- 在Golang中,if后面并列的加入变量的定义。
# 双分支语句
当条件表达式成立时,执行逻辑代码1,否则执行代码2。
语法:
if 条件表达式 {
// 逻辑代码1
} else {
// 逻辑代码2
}
1
2
3
4
5
2
3
4
5
package main
import "fmt"
func main() {
var age int = 17
if age > 18 {
fmt.Println("小明今年满18岁了")
} else {
fmt.Println("小明今年没有满18岁了")
}
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
注意
else 的左右括号必须在同一行,不可以换行。
# 多分支语句
语法:
if 条件表达式 {
// 逻辑代码1
} else {
// 逻辑代码2
}
...
else {
// 逻辑代码n
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# switch分支
基本语法:
switch 表达式 {
case 值1,值2,...
语句块1
case 值3,值4
语句块2
default:
语句块
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
package main
import "fmt"
func main() {
var age int = 16
switch age {
case 18:
fmt.Println("小明今年满18岁了")
default:
fmt.Println("小明今年没有满18岁了")
}
}
// 小明今年没有满18岁了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
相关信息
switch后是一个表达式(即:常量值,变量,一个有返回值的函数等)。
case后的各个值的数据类型,必须和switch的表达式数据类型一致。
case后面可以带多个表达式,使用逗号间隔。比如:case 表达式1,表达式2...
func main() { var age int = 16 switch age { case 18, 17, 16: fmt.Println("小明今年满18岁了") default: fmt.Println("小明今年没有满18岁了") } } // 小明今年满18岁了
1
2
3
4
5
6
7
8
9
10case后面的表达式如果是常量值(字面量),则要求不能重复。
case后面不需要带break,程序匹配到一个case后就会执行对应的代码块,然后退出switch,如果一个都匹配不到,则执行default。
default语句不是必须的。
switch语句也可以不带表达式,当做if分支来使用。
func main() { var age int = 16 switch { case age > 17: fmt.Println("小明今年满18岁了") default: fmt.Println("小明今年没有满18岁了") } } // 小明今年没有满18岁了
1
2
3
4
5
6
7
8
9
10switch后也可以直接声明/定义一个变量,分号结束,不推荐。
func main() { // 只能是 := 不能是 var age int switch age := 16; { case age > 17: fmt.Println("小明今年满18岁了") default: fmt.Println("小明今年没有满18岁了") } }
1
2
3
4
5
6
7
8
9注意需要分号结尾。
switch穿透,利用fallthrough关键字,如果在case语句块后增加fallthrough,则会继续执行下一个case,也叫switch穿透。
func main() { var age int = 16 switch age { case 16: fmt.Println("小明今年满18岁了") fallthrough case 8: fmt.Println("我打印了") default: fmt.Println("小明今年没有满18岁了") } } // 打印结果 // 小明今年满18岁了 // 我打印了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15