1. 程式人生 > 實用技巧 >goto 無條件跳轉

goto 無條件跳轉

0. 基本模型

goto顧言思義,是跳轉的意思。

goto 後接一個標籤,這個標籤的意義是告訴 Go程式下一步要執行哪裡的程式碼。

所以這個標籤如何放置,放置在哪裡,是 goto 裡最需要注意的。

goto 標籤;
...
...
標籤: 表示式;

1. 最簡單的示例

goto可以打破原有程式碼執行順序,直接跳轉到某一行執行程式碼。

import "fmt"

func main() {

    goto flag
    fmt.Println("B")
flag:
    fmt.Println("A")

}
執行結果,並不會輸出 B ,而只會輸出 A

A

2. 如何使用?

goto語句通常與條件語句配合使用。可用來實現條件轉移, 構成迴圈,跳出迴圈體等功能。

這邊舉一個例子,用goto的方式來實現一個列印 1到5 的迴圈。


最後再舉個例子,使用 goto 實現 型別continue的效果,列印 1到10 的所有偶數。

import "fmt"

func main() {
    i := 1
flag:
    for i <= 10 {
        if i%2 == 1 {
            i++
            goto flag
        }
        fmt.Println(i)
        i++
    }
}
輸出如下

2 4 6 8 10

3. 注意事項

goto語句與標籤之間不能有變數宣告,否則編譯錯誤。

import "fmt"

func main() {
    fmt.Println("start")
    goto flag
    var say = "hello oldboy"
    fmt.Println(say)
flag:
    fmt.Println("end")
}

編譯錯誤

.\main.go:7:7: goto flag jumps over declaration of say at .\main.go:8:6