目录
前言
1.基本for循环
2.用for循环模拟while
3.嵌套循环
4.for-range循环
5.循环控制语句
5.1 break与continue
5.2 goto语句
6.无限循环
Go语言中的循环语句主要有for
循环,没有像其他语言中的while
或do-while
循环。for
循环在Go语言中非常灵活,可以用于实现各种循环需求。本文将主要介绍for循环的基本用法。
最基本的for循环结构,如下:
for 初始化语句; 条件表达式; 后置语句 {
// 循环体
}
初始化语句:在循环开始前执行,通常用于初始化循环变量。
条件表达式:在每次循环迭代前进行判断,如果为
true
,则执行循环体;如果为false
,则退出循环。后置语句:在每次循环迭代后执行,通常用于更新循环变量。
示例:
for i := 0; i < 10; i++ {
fmt.Println(i)
}
在这个例子中,i
从0开始,每次循环后i
增加1,直到i
不再小于10时循环结束。
Go语言中没有专门的while
关键字,但可以使用for
循环来实现类似的功能。只需要省略初始化语句和后置语句,只保留条件表达式。
i := 0
for i < 10 {
fmt.Println(i)
i++
}
在这个例子中,for
循环的行为类似于while
循环,只要i < 10
为true
,循环就会继续执行。
Go语言支持嵌套循环,即在一个循环体内再嵌套另一个循环。
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
fmt.Printf("i: %d, j: %d\n", i, j)
}
}
在这个例子中,外层循环和内层循环分别控制变量i
和j
,输出它们的值。
for-range
循环用于遍历数组、切片、字符串、映射或通道。for-range
循环的语法如下:
for 索引, 值 := range 集合 {
// 循环体
}
索引:当前元素的索引(对于数组、切片、字符串)或键(对于映射)。
值:当前元素的值。
示例:
nums := []int{1, 2, 3, 4, 5}
for index, value := range nums {
fmt.Printf("索引: %d, 值: %d\n", index, value)
}
在这个例子中,for-range
循环遍历了nums
切片,并输出了每个元素的索引和值。
如果不需要索引或值,可以使用下划线_
来忽略它们:
for _, value := range nums {
fmt.Println(value)
}
控制语句 | 描述 |
---|---|
break 语句 | 用于中断当前 for 循环或跳出 switch 语句 |
continue 语句 | 跳过当前循环的剩余语句,然后继续进行下一轮循环。 |
goto语句 | 将控制转移到被标记的语句。 |
for i := 0; i < 10; i++ {
if i == 5 {
break // 当i等于5时,跳出循环
}
if i%2 == 0 {
continue // 当i为偶数时,跳过本次循环
}
fmt.Println(i)
}
在这个例子中,break
语句在i
等于5时终止循环,而continue
语句在i
为偶数时跳过当前循环迭代。
虽然 goto
语句在现代编程语言中不推荐使用,因为它可能导致代码难以理解和维护,但 Go 语言仍然提供了 goto
语句。它可以跳转到同一函数内的某个标签处。基本语法如下:
goto Label
...
Label:
// 跳转到这里
示例:
package main
import "fmt"
func main() {
i := 0
Loop:
fmt.Println(i)
i++
if i < 5 {
goto Loop
}
}
上述例子,最终会输出数字1~5.
如果省略for
循环中的所有条件,就会创建一个无限循环。无限循环会一直执行,直到在循环体内使用break
语句跳出循环。
for {
fmt.Println("无限循环")
// 使用break跳出循环
break
}
在这个例子中,for
循环没有条件表达式,因此会无限循环下去,直到遇到break
语句。