Go之旅-for迴圈

frankphper發表於2017-04-09

Go 語言僅有 for 一種迴圈語句,但常用方式都能支援。其中初始化表示式支援函式呼叫或定義區域性變數,需要注意的是初始化語句中的函式僅執行一次,條件表示式中的函式重複執行,規避方式就是在初始化表示式中定義區域性變數儲存函式返回結果。Go 語言中也有 goto 語句,使用 goto 語句前,必須先定義標籤,標籤區分大小寫,並且未使用的標籤會引發編譯錯誤。和 goto 定點跳轉不同,break、continue 用於中斷程式碼塊執行。break 用於 switch、for、select 語句,終止整個語句塊執行,continue 僅用於 for 迴圈,終止後續邏輯,立即進入下一輪迴圈。break 和 continue 配合標籤使用,可以在多層巢狀中指定目標層級。

<!-- more -->

package main

import (
    &quot;fmt&quot;
)

// count函式
func count() int {
    fmt.Println(&quot;count.&quot;) // 列印字串用來檢視count函式執行次數
    return 3
}

// main函式
func main() {
    // for迴圈
    // 初始化表示式,支援函式呼叫或定義區域性變數
    for i := 0; i &lt; 10; i++ {
        fmt.Println(i)
    }
    // 類似while迴圈
    i := 0
    for i &lt; 10 {
        fmt.Println(i)
        i++
    }
    // 類似無限迴圈
    for {
        break
    }
    // 初始化語句中的count函式僅執行一次
    for i, c := 0, count(); i &lt; c; i++ {
        fmt.Println(&quot;a&quot;, i)
    }

    c := 0
    // 條件表示式中的count函式重複執行
    for c &lt; count() {
        fmt.Println(&quot;b&quot;, c)
        c++
    }
    // 規避條件表示式中的count函式重複執行,在初始化表示式中定義區域性變數儲存count函式返回結果
    count := count()
    d := 0
    for d &lt; count {
        fmt.Println(&quot;c&quot;, d)
        d++
    }
    // goto定點跳轉
    // 須先定義標籤,並且未用到的標籤會引發編譯錯誤
    // 不能跳轉到其它函式,或內層程式碼塊內
    for i := 0; i &lt; 10; i++ {
        fmt.Println(i)
        if i &gt; 5 {
            goto exit
        }
    }
exit:
    fmt.Println(&quot;exit.&quot;)

    // break 使用者switch、for、select語句,終止整個語句塊執行。continue 僅用於for迴圈,終止後續邏輯,立即進入下一輪迴圈
    for i := 0; i &lt; 10; i++ {
        if i%2 == 0 {
            continue // 立即進入下一輪迴圈
        }
        if i &gt; 5 {
            break // 立即終止整個for迴圈
        }
        fmt.Println(i)
    }
    // 配合標籤,break和continue可在多層巢狀中指定目標層級
outer:
    for i := 0; i &lt; 5; i++ {
        for j := 0; j &lt; 10; j++ {
            if j &gt; 2 {
                fmt.Println()
                continue outer
            }

            if i &gt; 2 {
                break outer
            }
            fmt.Print(i, &quot;:&quot;, j, &quot; &quot;)
        }
    }

}

更多原創文章乾貨分享,請關注公眾號
  • Go之旅-for迴圈
  • 加微信實戰群請加微信(註明:實戰群):gocnio

相關文章