本文系第九篇Golang语言学习教程
Go语言只有For这一种循环语句。For循环有三种形式,只有其中一种使用分号。
- 与其他语言for类似
for init; condition; post {
}
- 和while类似
for condition {
}
- 和其他语言for {;;}类似
for {
}
init:一般为赋值表达式,为循环变量赋初值
condition:循环控制条件,关系表达式或逻辑表达式
post:一般为赋值表达式,给循环变量增量或减量
下面通过几个例子来理解循环
例1
package main
import "fmt"
func main(){
for i :=1; i <=10; i++{ //i=1,且i<=10,每次循环+1
fmt.Printf(" %d", i)
}
}
以上例子中,分别以分号;
定义了init,condition,post
初始化语句只执行一次,循环初始化后,将检查循环条件,如果结果为true
,则执行{ }
中的循环体;post语句在每次成功循环迭代后执行,在执行完post后,条件将被再次检查,若结果为true
,则循环继续执行,否则循环结束。
例2
package main
import "fmt"
func main(){
j := 0
for ; j <= 10; { //两个 ; 可以省略
fmt.Printf(" %d", j)
j += 2
}
}
以上例子中,初始化语句和post
语句都被省略,j
在for循环外就被初始化为0
,只要条件j <= 10
为true,循环就会执行,并且在循环中 j 以2的增量自增。
以上程序打印了0到10所有的偶数:0 2 4 6 8 10
例3
package main
import "fmt"
func main(){
for {
fmt.Println("Hello,world!")
}
}
以上程序是一个无限循环程序,会不停的输出Hello,world!
break
break用于在完成正常执行之前突然中止for循环,之后程序会开始在for循环下一行代码执行。
例4
package main
import "fmt"
func main(){
for a := 0; a <= 10; a++{
if a >5 {
break
}
fmt.Printf(" %d", a)
}
fmt.Println("\nthis go is stop")
}
以上程序在循环开始后首先判断a > 5
条件是否成立,若不成立,继续打印a的值,继续循环;若成立,则break
终止循环,继续执行下面的打印 this go is stop
循环打印结果为:
0 1 2 3 4 5
this go is stop
continue
continue
用来跳出当前循环,在continue
语句后所有的循环都不会再本次循环中执行,循环体会在下一次循环中继续执行。
例5
package main
import "fmt"
func main(){
for b := 0; b <= 10; b++{
if b%2 == 0 {
continue
}
fmt.Printf(" %d", b)
}
}
以上程序在循环开始后首先判断b除以2的余数是不是0(b%2 == 0
),若结果为成立,则跳出本次循环,后面的语句不会被执行;若不成立,则继续执行后面的语句。
循环打印的结果为:
1 3 5 7 9
例6
for循环中可以声明和操作多个变量:
package main
import "fmt"
func main(){
for yes, no :=10,1; yes <=20 && no <=10 ; yes, no = yes+1, no+1 {
fmt.Printf("\n%d * %d = %d", yes,no,yes * no )
}
}
以上程序声明yes和no的值,&&
用来确保yes的值小于20并且no的值小于10,每次循环完成后yes和no自增1
循环打印的结果为:
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
以上为学习Golang 循环篇