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
系列導讀
有疑問加站長微信聯系(非本文作者)