本文系第九篇Golang語言學習教程
Go語言只有For這一種迴圈語句。For迴圈有三種形式,只有其中一種使用分號。
for init; condition; post { }
for condition { }
for { }
init:一般為賦值運算式,為迴圈變數賦初值
condition:迴圈控制條件,關聯運算式或邏輯運算式
post:一般為賦值運算式,給迴圈變數增量或減量
下面通過幾個例子來理解迴圈
例1
package mainimport "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 mainimport "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 mainimport "fmt"func main(){ for { fmt.Println("Hello,world!") }}
以上程式是一個無限迴圈程式,會不停的輸出Hello,world!
break
break用於在完成正常執行之前突然中止for迴圈,之後程式會開始在for迴圈下一行代碼執行。
例4
package mainimport "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 mainimport "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 mainimport "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 迴圈篇