1. 程式人生 > >GO學習筆記(條件判斷,迴圈,分支,label)

GO學習筆記(條件判斷,迴圈,分支,label)

今天學習了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")
}