我的 github:github.com/iswbm/golangcodingtime
前面三種,我已經都講過了,今天要講講 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 無條件跳轉
前面三種,我已經都講過了,今天要講講 goto 的無條件跳轉。很難想象在 go 居然會保留 goto,因為很多人不建議使用 goto,所以在一些程式語言中甚至直接取消了 goto。我感覺 go 既然保留,一定有人家的理由,只是我目前還沒感受到。不管怎樣,咱還是照常學習吧。goto顧言思義,是跳轉的意...
流程控制 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 練習 寫乙個...