流程控制
while
前言
在 Go 语言中,我们使用循环来重复执行一段代码,直到满足特定条件。然而,与其他编程语言不同,Go 并没有专门的 while
关键字。然而,我们可以利用 for
循环来实现 while
循环的功能。
作用
while
循环用于在满足特定条件之前重复执行一段代码。它的主要作用是使程序能够在满足某个条件时持续执行代码块,而一旦条件不再满足,则结束循环。
使用场景
- 重复任务: 当需要重复执行某段代码,直到满足某个条件时,例如读取用户输入直到用户输入有效值。
- 条件判断: 用于在满足某个条件之前不断执行某项任务,比如在用户登录成功之前不断尝试登录。
- 动态数据处理: 处理动态变化的数据,例如从数据库中读取数据直到所有数据被处理完成。
示例
- 示例 1: 使用
for
循环打印1到5之间的数字
package main
import ("fmt")
func main() {
number := 1
for number <= 5 {
fmt.Println(number)
number++
}
}
输出:
1
2
3
4
5
解释:
- 初始化:
number
被初始化为1
。 - 条件检查:
number <= 5
,条件为true
时执行循环体。 - 循环体:打印
number
的值,并将number
增加1
。 - 过程:
- 第1次迭代:
number = 1
,打印1
,然后number
增加到2
。 - 第2次迭代:
number = 2
,打印2
,然后number
增加到3
。 - 第3次迭代:
number = 3
,打印3
,然后number
增加到4
。 - 第4次迭代:
number = 4
,打印4
,然后number
增加到5
。 - 第5次迭代:
number = 5
,打印5
,然后number
增加到6
。 - 当
number = 6
时,条件number <= 5
为false
,循环终止。
- 第1次迭代:
- 示例 2: 使用
for
循环生成乘法表
package main
import ("fmt")
func main() {
multiplier := 1
// 循环10次
for multiplier <= 10 {
// 计算乘积
product := 5 * multiplier
// 打印乘法表,格式为 5 * 1 = 5
fmt.Printf("5 * %d = %d\n", multiplier, product)
multiplier++
}
}
输出:
5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
5 * 4 = 20
5 * 5 = 25
5 * 6 = 30
5 * 7 = 35
5 * 8 = 40
5 * 9 = 45
5 * 10 = 50
解释:
- 初始化:
multiplier
被初始化为1
。 - 循环从
multiplier = 1
到multiplier <= 10
:- 在每次迭代中,计算
5
乘以multiplier
的值,并将结果打印出来。 - 循环结束时,
multiplier
的值为11
。
- 在每次迭代中,计算
Go do…while 循环
在 Go 中,我们可以利用 for
循环来模拟 do...while
循环的功能。do...while
循环至少会执行一次循环体,然后在每次循环结束后检查条件。
示例: 使用 for
循环模拟 do...while
循环
package main
import "fmt"
func main(){
number := 1
// 无限循环
for {
// 终止循环的条件
if number > 5 {
break
}
fmt.Printf("%d\n", number)
number++
}
}
输出:
1
2
3
4
5
解释:
- 使用
for
循环创建一个无限循环。 - 循环体内的
if
语句作为do...while
循环中的while
部分,用于检查是否满足终止条件。 - 当
number > 5
时,使用break
语句终止循环。