第二章:流程控制(Go)
学习目标:掌握 Go 语言中程序执行顺序的控制方式,包括条件判断、循环与流程跳转。
2.1 程序的基本执行结构
Go 语言中,程序默认按照 顺序结构 执行,即代码从上到下依次运行。
package main
import "fmt"
func main() {
fmt.Println("step 1")
fmt.Println("step 2")
fmt.Println("step 3")
}
2.2 分支结构(条件判断)
2.2.1 if 语句
基本用法
if 条件 {
// 条件为 true 时执行
}
if score >= 60 {
fmt.Println("及格")
}
if … else
if score >= 60 {
fmt.Println("及格")
} else {
fmt.Println("不及格")
}
if … else if … else
if score >= 90 {
fmt.Println("优秀")
} else if score >= 60 {
fmt.Println("及格")
} else {
fmt.Println("不及格")
}
2.2.2 if 的特殊写法(初始化语句)
if age := 20; age >= 18 {
fmt.Println("成年人")
}
✅ 特点:
初始化变量只在 if / else 代码块中有效
常用于函数返回值判断
2.2.3 switch 语句
基本结构
switch 表达式 {
case 值1:
// 执行逻辑
case 值2:
// 执行逻辑
default:
// 默认逻辑
}
day := 3
switch day {
case 1:
fmt.Println("Monday")
case 2:
fmt.Println("Tuesday")
case 3:
fmt.Println("Wednesday")
default:
fmt.Println("Unknown")
}
✅ Go 中 switch 默认自带 break,不会自动向下穿透。
一个 case 多个值
switch score {
case 90, 100:
fmt.Println("优秀")
case 60, 70, 80:
fmt.Println("及格")
default:
fmt.Println("不及格")
}
switch 不带表达式(代替 if-else)
switch {
case score >= 90:
fmt.Println("优秀")
case score >= 60:
fmt.Println("及格")
default:
fmt.Println("不及格")
}
2.3 循环结构
Go 语言只有一种循环结构:for
2.3.1 经典 for 循环
for i := 0; i < 5; i++ {
fmt.Println(i)
}
2.3.2 条件循环(类似 while)
i := 0
for i < 5 {
fmt.Println(i)
i++
}
2.3.3 无限循环
for {
fmt.Println("running...")
}
✅ 常用于服务端程序、监听任务、消息消费等场景。
2.3.4 for range 遍历
遍历切片 / 数组
nums := []int{1, 2, 3}
for index, value := range nums {
fmt.Println(index, value)
}
忽略索引:
for _, value := range nums {
fmt.Println(value)
}
遍历 map
m := map[string]int{
"a": 1,
"b": 2,
}
for key, value := range m {
fmt.Println(key, value)
}
2.4 流程控制关键字
2.4.1 break
for i := 0; i < 10; i++ {
if i == 5 {
break
}
fmt.Println(i)
}
2.4.2 continue
for i := 0; i < 5; i++ {
if i == 2 {
continue
}
fmt.Println(i)
}
2.4.3 return
func add(a, b int) int {
return a + b
}
2.4.4 goto(不推荐)
goto END
fmt.Println("不会执行")
END:
fmt.Println("结束")
⚠️ 实际开发中应尽量避免使用。