Go循环语句for
Go只有for循环关键字,但支持多种循环形式,语法灵活。
for基本语法
标准三段式
Go
// 初始化; 条件; 后置语句
for i := 0; i < 10; i++ {
fmt.Println(i)
}
// 输出:0, 1, 2, ..., 9
各部分说明
Go
for 初始化; 条件; 后置 {
// 循环体
}
// 初始化:循环开始前执行一次
// 条件:每次迭代前检查,false时结束
// 后置:每次迭代后执行
省略部分
Go
// 省略初始化和后置(类似while)
i := 0
for i < 10 {
fmt.Println(i)
i++
}
// 省略条件(无限循环)
for {
fmt.Println("无限循环")
break // 需要break退出
}
while循环模拟
类似while
Go
// Go没有while关键字
// 用for模拟
// while(condition)形式
i := 0
for i < 10 {
fmt.Println(i)
i++
}
// do-while形式
i := 0
for {
fmt.Println(i)
i++
if i >= 10 {
break
}
}
无限循环
无条件for
Go
// 无限循环
for {
// 循环体
// 必须有break或return退出
}
// 示例:服务监听
for {
conn := accept()
handle(conn)
}
带退出条件
Go
for {
data := read()
if data == nil {
break // 退出循环
}
process(data)
}
循环控制
break退出
Go
for i := 0; i < 10; i++ {
if i == 5 {
break // 提前退出
}
fmt.Println(i)
}
// 输出:0, 1, 2, 3, 4
continue跳过
Go
for i := 0; i < 10; i++ {
if i % 2 == 0 {
continue // 跳过本次迭代
}
fmt.Println(i)
}
// 输出:1, 3, 5, 7, 9
for循环变体
| 形式 | 语法 | 说明 |
|---|---|---|
| 标准 | for i:=0; i<n; i++ | 三段式 |
| while | for condition {} | 只有条件 |
| 无限 | for {} | 无条件 |
| range | for i, v := range seq | 集合遍历 |
循环标签
标签与break
Go
outer:
for i := 0; i < 10; i++ {
for j := 0; j < 10; j++ {
if i == 5 && j == 5 {
break outer // 跳出外层循环
}
}
}
标签与continue
Go
outer:
for i := 0; i < 5; i++ {
for j := 0; j < 5; j++ {
if j == 2 {
continue outer // 跳到外层循环下一次
}
}
}
for使用示例
Go
func main() {
// 标准:计数循环
for i := 0; i < 10; i++ {
fmt.Println(i)
}
// while模拟:条件循环
n := 1
for n < 100 {
n *= 2
}
fmt.Println(n) // 128
// 无限循环:带退出
for {
input := readInput()
if input == "quit" {
break
}
process(input)
}
}
要点总结
- Go只有for循环,无while关键字
- 标准语法:
for 初始化; 条件; 后置 {} - 省略初始化和后置可模拟while
for {}是无限循环,需break退出- break退出循环,continue跳过当前迭代
- 标签配合break/continue控制多层循环
- 条件无括号,代码块必须有{}
- for是Go唯一的循环关键字
📝 发现内容有误?点击此处直接编辑