GO學習筆記(條件判斷,迴圈,分支,label)
阿新 • • 發佈:2018-11-28
今天學習了go語言的條件判斷(if-else), 迴圈(for go 裡面沒有while 迴圈), 分支(switch-case), 程式碼塊(label)
條件判斷 if-else
go 裡面的條件判斷和其他語言的區別是go的條件判斷裡面條件表示式是沒有括號的, if 條件的左邊花括號 必須和 if 在同一行,不可換到下一行
因此如果寫成下面這種是錯誤的
package main
import (
"fmt"
)
func main(){
x := 10
// 這種方式是錯誤的 x > 10 這個條件表示式 不能用括號
if (x > 10 ) {
fmt.Println(x)
}
// 這種方式也是錯誤的,左邊的花括號必須和 if 語句在同一行
if x > 10
{
fmt.Println(x)
}
}
迴圈(for) go 裡面沒有while 迴圈
如果是寫其他語言的while true 死迴圈 使用如下方式
for {
// 這種方式就是死迴圈
}
常規定義的方式和其他語言差不多都是使用i=0; i<n; i++
這種方式, 不同的是 go 的for 迴圈表示式也沒有括號 如下
for i := 0; i<=10; i ++ {
// go for 迴圈
}
其他方式
i := 0
for i < 100 {
i += 1
}
分支(switch-case-default)
go switch 語句和其他語言的switch 語句差不多 定義的方式如下
switch i {
case 1:
fmt.Println("1")
case 2:
fmt.Println("2")
default:
fmt.Println("default")
}
switch-case 裡面 還有個 fallthrough
關鍵字這是我之前接觸是其他程式語言裡面沒有遇到過的,他的用法是,當某個case 滿足條件之後 進入了該case 但是還想再嘗試是否滿足其他case 就可以使用 fallthrough
用法如下:
i := 10
switch {
case i > 1:
fmt.Println("1")
fallthrough
case i > 2:
fmt.Println("2")
fallthrough
default:
fmt.Println("default")
}
label(標籤/程式碼塊)
label 的使用場景一般是當你有多個for 迴圈巢狀的時候,如果你想跳出所有的迴圈,就可以使用label
如下
func lebels() {
LEBEL:
for {
for i := 0; i <= 10; i++ {
if i > 5 {
// 外層迴圈是死迴圈,使用 lebel 時 可以跳轉到lebel層,從而跳出死迴圈, 直接跳到下面的OK
break LEBEL
}
}
}
fmt.Println("OK")
}