前面三種,我已經都講過了,今天要講講 goto 的無條件跳轉。
很難想象在 go 居然會保留 goto,因為很多人不建議使用 goto,所以在一些程式語言中甚至直接取消了 goto。
我感覺 go 既然保留,一定有人家的理由,只是我目前還沒感受到。不管怎樣,咱還是照常學習吧。
goto
顧言思義,是跳轉的意思。
goto 後接乙個標籤,這個標籤的意義是告訴 go程式下一步要執行**的**。
所以這個標籤如何放置,放置在**,是 goto 裡最需要注意的。
goto 標籤;
......
標籤: 表示式;
goto
可以打破原有**執行順序,直接跳轉到某一行執行**。
import "fmt"
func main()
執行結果,並不會輸出 b ,而只會輸出 a
a
goto
語句通常與條件語句配合使用。可用來實現條件轉移, 構成迴圈,跳出迴圈體等功能。
這邊舉乙個例子,用goto
的方式來實現乙個列印 1到5 的迴圈。
import "fmt"
func main()
}
輸出如下
123
45
再舉個例子,使用 goto 實現 型別 break 的效果。
import "fmt"
func main()
fmt.println(i)
i++}
flag:
}
輸出如下
123
45
最後再舉個例子,使用 goto 實現 型別 continue的效果,列印 1到10 的所有偶數。
import "fmt"
func main()
fmt.println(i)
i++}
}
輸出如下
246
810
goto語句與標籤之間不能有變數宣告,否則編譯錯誤。
import "fmt"
func main()
編譯錯誤
.\main.go:7:7: goto flag jumps over declaration of say at .\main.go:8:6
01. 開發環境的搭建(goland & vs code)02. 學習五種變數建立的方法03. 詳解資料型別:**整形與浮點型**
04. 詳解資料型別:byte、rune與string
05. 詳解資料型別:陣列與切片
06. 詳解資料型別:字典與布林型別
07. 詳解資料型別:指標
08. 物件導向程式設計:結構體與繼承
09. 一篇文章理解 go 裡的函式
10. go語言流程控制:if-else 條件語句
11. go語言流程控制:switch-case 選擇語句
12. go語言流程控制:for 迴圈語句
13. go語言流程控制:goto 無條件跳轉
14. go語言流程控制:defer 延遲呼叫
15. 物件導向程式設計:介面與多型
16. 關鍵字:make 和 new 的區別?
17. 一篇文章理解 go 裡的語句塊與作用域
18. 學習 go 協程:goroutine
19. 學習 go 協程:詳解通道/通道
20. 幾個通道死鎖經典錯誤案例詳解
21. 學習 go 協程:waitgroup
22. 學習 go 協程:互斥鎖和讀寫鎖
23. go 裡的異常處理:panic 和 recover
24. 超詳細解讀 go modules 前世今生及入門使用
25. go 語言中關於包匯入必學的 8 個知識點
26. 如何開源自己寫的模組給別人用?
27. 說說 go 語言中的型別斷言?
28. 這五點帶你理解go語言的select用法
11 Go 語言流程控制 goto 無條件跳轉
我的 github github.com iswbm golangcodingtime 前面三種,我已經都講過了,今天要講講 goto 的無條件跳轉。很難想象在 go 居然會保留 goto,因為很多人不建議使用 goto,所以在一些程式語言中甚至直接取消了 goto。我感覺 go 既然保留,一定有人...
流程控制 goto語句
c 允許給 加上標籤,這樣就可以使用goto語句直接跳轉到這些 行上。該語句有其優缺點。優點 這是控制什麼時候執行哪些 的一種非常簡單的方式。缺點 過多的使用這個技巧將很難讀懂 goto語句用法如下 goto 標籤用下述方式定義 例如,下面的 int myinteger 5 goto mylabel...
Go語言 流程控制
if else分支判斷 if condition1 if condition1 else if condition1 else if condition2 else if condition3 else 練習 package main import fmt func main else 練習 寫乙個...