# 第二章:流程控制(Go)

5 阅读2分钟

第二章:流程控制(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("及格")
}
ifelse
if score >= 60 {
	fmt.Println("及格")
} else {
	fmt.Println("不及格")
}
ifelse ifelse
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 表达式 {
case1:
	// 执行逻辑
case2:
	// 执行逻辑
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-elseswitch {
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("结束")
⚠️ 实际开发中应尽量避免使用。