Hi,你們好,我是明哥。git
在本身學習 Golang 的這段時間裏,我寫了詳細的學習筆記放在個人我的微信公衆號 《Go編程時光》,對於 Go 語言,我也算是個初學者,所以寫的東西應該會比較適合剛接觸的同窗,若是你也是剛學習 Go 語言,不防關注一下,一塊兒學習,一塊兒成長。github
個人在線博客:http://golang.iswbm.com
個人 Github:github.com/iswbm/GolangCodingTimegolang
Go裏的流程控制方法仍是挺豐富,整理了下有以下這麼多種:編程
前面三種,我已經都講過了,今天要講講 goto 的無條件跳轉。數組
很難想象在 Go 竟然會保留 goto,由於不少人不建議使用 goto,因此在一些編程語言中甚至直接取消了 goto。微信
我感受 Go 既然保留,必定有人家的理由,只是我目前還沒感覺到。無論怎樣,咱仍是照常學習吧。編程語言
goto
顧言思義,是跳轉的意思。函數
goto 後接一個標籤,這個標籤的意義是告訴 Go程序下一步要執行哪裏的代碼。學習
因此這個標籤如何放置,放置在哪裏,是 goto 裏最須要注意的。3d
goto 標籤; ... ... 標籤: 表達式;
goto
能夠打破原有代碼執行順序,直接跳轉到某一行執行代碼。
import "fmt" func main() { goto flag fmt.Println("B") flag: fmt.Println("A") }
執行結果,並不會輸出 B ,而只會輸出 A
A
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
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
系列導讀
24. 超詳細解讀 Go Modules 前世此生及入門使用