for 迴圈語句
阿新 • • 發佈:2020-09-04
0. 語句模型
這是 for 迴圈的基本模型。
for [condition | ( init; condition; increment ) | Range] { statement(s); }
可以看到 for 後面,可以接三種類型的表示式。
-
接一個條件表示式
-
接三個表示式
-
接一個 range 表示式
但其實還有第四種
-
不接表示式
1. 接一個條件表示式
這個例子會列印 1 到 5 的數值。
a := 1 for a <= 5 { fmt.Println(a) a ++ } 輸出如下 1 2 3 4 5
2. 接三個表示式
for 後面,緊接著三個表示式,使用;
分隔。
這三個表示式,各有各的用途
-
第一個表示式:初始化控制變數,在整個迴圈生命週期內,只執行一次;
-
第二個表示式:設定迴圈控制條件,當返回true,繼續迴圈,返回false,結束迴圈;
-
第三個表示式:每次循完開始(除第一次)時,給控制變數增量或減量。
這邊的例子和上面的例子,是等價的。
import "fmt" func main() { for i := 1; i <= 5; i++ { fmt.Println(i) } } 輸出如下 1 2 3 4 5 2
不接表示式:無限迴圈
在 Go 語言中,沒有 while 迴圈,如果要實現無限迴圈,也完全可以 for 來實現。
當你不加任何的判斷條件時, 就相當於你每次的判斷都為 true,程式就會一直處於執行狀態,但是一般我們並不會讓程式處於死迴圈,在滿足一定的條件下,可以使用關鍵字break
退出迴圈體,也可以使用continue
直接跳到下一迴圈。
下面兩種寫法都是無限迴圈的寫法。
for { 程式碼塊 } // 等價於 for ;; { 程式碼塊 } 舉個例子 import "fmt" func main() { var i int = 1 for { if i > 5 { break } fmt.Printf("hello, %d\n", i) i++ } } 輸出如下 hello, 1 hello, 2 hello, 3 hello, 4 hello, 5
3. 接 for-range 語句
遍歷一個可迭代物件,是一個很常用的操作。在 Go 可以使用 for-range 的方式來實現。
range 後可接陣列、切片,字串等
由於 range 會返回兩個值:索引和資料,若你後面的程式碼用不到索引,需要使用_
表示 。
import "fmt" func main() { myarr := [...]string{"world", "python", "go"} for _, item := range myarr { fmt.Printf("hello, %s\n", item) } } 輸出如下 hello, world hello, python hello, go