循环语句
如果想要重复执行某些语句,Go 语言中只有 for 结构可以使用。这个 for 结构比其它语言中的更为灵活。
for 循环
基本格式:
for [condition | ( init; condition; increment ) | Range]
{
statement(s);
}
可以看到 for 后面,可以接三种类型的表达式:
- 接一个条件表达式
- 接三个表达式
- 接一个 range 表达式
for-range 结构
这是 Go 特有的一种的迭代结构,您会发现它在许多情况下都非常有用。它可以迭代任何一个集合(包括数组和 map)。语法上很类似其它语言中的 foreach 语句,但依旧可以获得每次迭代所对应的索引。一般形式为:for ix, val := range coll { }。
要注意的是,val 始终为集合中对应索引的值拷贝,因此它一般只具有只读性质,对它所做的任何修改都不会影响到集合中原有的值(译者注:如果 val 为指针,则会产生指针的拷贝,依旧可以修改集合中的原值)。一个字符串是 Unicode 编码的字符(或称之为 rune)集合,因此也可以用它迭代字符串:
for pos, char := range str {
...
}
每个 rune 字符和索引在 for-range 循环中是一一对应的。它能够自动根据 UTF-8 规则识别 Unicode 编码的字符。
循环嵌套
Go 语言允许用户在循环内使用循环。接下来我们将为大家介绍嵌套循环的使用。
语法
以下为 Go 语言嵌套循环的格式:
for [condition | ( init; condition; increment ) | Range]
{
for [condition | ( init; condition; increment ) | Range]
statement(s);
}
statement(s);
}
循环控制语句
循环控制语句可以控制循环体内语句的执行过程。
GO 语言支持以下几种循环控制语句:
- break 语句 经常用于中断当前 for 循环或跳出 switch 语句。
- continue 语句 跳过当前循环的剩余语句,然后继续进行下一轮循环。
- goto 语句 将控制转移到被标记的语句。
无限循环
如果循环中条件语句永远不为 false 则会进行无限循环,我们可以通过 for 循环语句中只设置一个条件表达式来执行无限循环:
实例
package main
import "fmt"
func main() {
for true {
fmt.Printf("这是无限循环。\n");
}
}