在程序中,程序运行的流程控制决定程序是怎么样执行的。
一、主要三大流程控制
- 顺序控制
- 分支控制
- 循环控制
二、分支控制
程序根据条件的不同执行不同的代码块
- 单分支: if
- 双分支: if...else
- 多分支: if...else if...else
- 嵌套分支:在一个分支内部再使用分支控制
- switch...case(go中的switch比其他语言更强大,可以实现多种分支控制)
1、单分支
- 基本语法
- 流程图
- 注意:go支持在if中直接定义一个变量;if后面的 { 不能换行
2、双分支
- 基本语法
- 流程图
- 注意:双分支只会执行其中的一个分支;if后面的 { 不能换行;else 不能换行
3、多分支
- 基本语法
- 流程图
- 注意:else 不是必须的。 如果没有else,所有条件都不满足时,程序会跳过整个多分支结构继续执行后面的代码
4、嵌套分支
在一个分支中嵌套了另一个完整的分支结构。里面的分支称为内层分支,外面的分支称为外层分支
- 基本语法
- 注意:建议嵌套不超过 3 层,否则会影响代码的可读性和维护性。if后面的 { 不能换行;else 不能换行
代码示例
package main
import "fmt"
func main() {
// 单分支
var a int = 10
if a > 5 { // 注意这个 { 不能换行,否则编译报错
fmt.Println("a 大于 5")
}
// 双分支
if a > 5 {
fmt.Println("a 大于 5")
} else { // 注意这个 { 和 else 不能换行,否则编译报错
fmt.Println("a 小于等于 5")
}
// 多分支
if a > 10 {
fmt.Println("a 大于 10")
} else if a > 5 {
fmt.Println("a 大于 5 小于等于 10")
} else {
fmt.Println("a 小于等于 5")
}
// 嵌套分支
if a > 10 {
fmt.Println("a 大于 10")
} else {
if a > 5 {
fmt.Println("a 大于 5 小于等于 10")
} else {
fmt.Println("a 小于等于 5")
}
}
// if 后面可以声明变量(但是一般不建议这么写)
if b := a * 2; b > 15 { // 注意这个 { 不能换行,否则编译报错
fmt.Println("b 大于 15")
} else {
fmt.Println("b 小于等于 15")
}
}