在上面的程序中,
i
被初始化为 1。条件语句将检查
i <= 10
。如果条件为真,则输出
i
的值,否则循环终止。在每次迭代结束时,post 语句将
i
递增 1。一旦
i
大于 10,则循环终止。
上面的程序将打印
1 2 3 4 5 6 7 8 9 10
在 for 循环中声明的变量仅在循环范围内可用。因此,无法在主体外部进行循环访问
i
。
break
break
语句用于在完成正常执行之前突然终止
for
循环,并将控制权移至
for
循环之后的代码行。
让我们编写一个使用
break
打印从 1 到 5 的数字的程序。
package main
import (
"fmt"
)
func main() {
for i := 1; i <= 10; i++ {
if i > 5 {
break // 如果 i 大于 5,循环将终止
}
fmt.Printf("%d ", i)
}
fmt.Printf("\nline after for loop")
}
复制代码
一个内部有另一个
for
循环的
for
循环称为嵌套
for
循环。让我们通过编写一个打印以下序列的程序来了解嵌套的
for
循环。
*
**
***
****
*****
复制代码
下面的程序使用嵌套的
for
循环来打印序列。第 8 行中的变量
n
存储序列中的行数。在我们的例子中是 5。外部
for
循环将
i
从
0
迭代到
4
,内部
for
循环将
j
从
0
迭代到
i
的当前值。 内循环为每次迭代打印“ *”,而外循环在每次迭代结束时打印新行。 运行该程序,你会看到序列打印为输出。
package main
import (
"fmt"
)
func main() {
n := 5
for i := 0; i < n; i++ {
for j := 0; j <= i; j++ {
fmt.Print("*")
}
fmt.Println()
}
}
复制代码
我们已经知道
for
循环的所有三个部分,即
initialisation
、
condition
和
post
都是可选的。在上述程序中,省略了
initialisation
和
post
。在
for
循环外,
i
被初始化为
0
。只要
i <= 10
,循环就会执行。我在
for
循环内增加了
2
。上面的程序输出
0 2 4 6 8 10
。
也可以省略上述程序的
for
循环中的分号。可以将这种格式视为
while
循环的替代方法。上面的程序可以改写为:
package main
import (
"fmt"
)
func main() {
i := 0
for i <= 10 { // 分号被省略,只剩下条件语句
fmt.Printf("%d ", i)
i += 2
}
}
复制代码
package main
import (
"fmt"
)
func main() {
for no, i := 10, 1; i <= 10 && no <= 19; i, no = i+1, no+1 {
fmt.Printf("%d * %d = %d\n", no, i, no*i)
}
}
复制代码