goto 無條件跳轉
阿新 • • 發佈:2020-09-04
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