Hi,大家好,我是明哥,
在自己學習 Golang 的這段時間里,我寫了詳細的學習筆記放在我的個人微信公眾號 《Go編程時光》,對于 Go 語言,我也算是個初學者,因此寫的東西應該會比較適合剛接觸的同學,如果你也是剛學習 Go 語言,不防關注一下,一起學習,一起成長,
我的在線博客:http://golang.iswbm.com
我的 Github:github.com/iswbm/GolangCodingTime
Go里的流程控制方法還是挺豐富,整理了下有如下這么多種:
- if - else 條件陳述句
- switch - case 選擇陳述句
- for - range 回圈陳述句
- goto 無條件跳轉陳述句
- defer 延遲執行
前面三種,我已經都講過了,今天要講講 goto 的無條件跳轉,
很難想象在 Go 居然會保留 goto,因為很多人不建議使用 goto,所以在一些編程語言中甚至直接取消了 goto,
我感覺 Go 既然保留,一定有人家的理由,只是我目前還沒感受到,不管怎樣,咱還是照常學習吧,
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 的回圈,
import "fmt"
func main() {
i := 1
flag:
if i <= 5 {
fmt.Println(i)
i++
goto flag
}
}
輸出如下
1
2
3
4
5
再舉個例子,使用 goto 實作 型別 break 的效果,
import "fmt"
func main() {
i := 1
for {
if i > 5 {
goto flag
}
fmt.Println(i)
i++
}
flag:
}
輸出如下
1
2
3
4
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
系列導讀
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用法

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/13819.html
標籤:Go
下一篇:golang 容器的學習與實踐
