让我们编写更多例子,来覆盖for
循环的所有变化。
下面的程序打印从0到10的所有偶数。
package main
import (
"fmt"
)
func main() {
i := 0
for ;i <= 10; { // 初始化和post部分(递增语句)被省略
fmt.Printf("%d ", i)
i += 2
}
}
我们已经知道for
循环的3个组成部分: 初始化、条件和post语句,都是可选的。
在上面的程序中,初始化和post被省略了。i
在for
循环外初始化为0
。只要i <= 10
,循环就会执行。i
在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
}
}
可以在for
循环中声明和操作多个变量。让我们编写一个程序,它使用多个变量声明来打印下面的序列。
10 * 1 = 10
11 * 2 = 22
12 * 3 = 36
13 * 4 = 52
14 * 5 = 70
15 * 6 = 90
16 * 7 = 112
17 * 8 = 136
18 * 9 = 162
19 * 10 = 190
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)
}
}
上面代码中,no
和i
分别被声明为10
和1
。它们在每次迭代结束时增加1
。布尔运算符&&
用于确保i
小于或等于10
,并且no
也小于或等于19。