goto语句_11. Go语言流程控制:goto 无条件跳转
本文原文:http://golang.iswbm.com
Github:https://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 flagfmt.Println("B") flag:fmt.Println("A")}執行結果,并不會輸出 B ,而只會輸出 A
A2. 如何使用?
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 := 1for {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 103. 注意事項
goto語句與標簽之間不能有變量聲明,否則編譯錯誤。
import "fmt"func main() {fmt.Println("start")goto flagvar 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好了,今天的文章就到這里了。
若今天的分享對你有幫助,不如點個贊,支持一下?
總結
以上是生活随笔為你收集整理的goto语句_11. Go语言流程控制:goto 无条件跳转的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 64位系统好不好用java_64位系统环
- 下一篇: js中 json对象与json字符串相互