Go語言筆記--控制語句

1.判斷語句if

1)條件表達式沒有括號

2)支持一個初始化表達式(可以是並行方式)

3)左大括號必須和條件語言else在同一行

4)支持單行模式

5)初始化語句中的變量爲block級別,同時隱藏外部同名變量

package main


import "fmt"


func main() {
    a := true
    if a, b, c := 1, 2, 3; a+b+c > 6 {
        fmt.Println("大於6")
    } else {
        fmt.Println("小於等於6")
        fmt.Println(a)
    }
    fmt.Println(a)
}

輸出:
API server listening at: 127.0.0.1:33684
小於等於6
1
true

從上述例子看出,if中的a是1,外部的a是true,這兩個不是同一個元素,if中的屬於一個局部變量

2.循環語句for

1)Go只有for一個循環語句關鍵字,但支持3中形式

2)初始化和步進表達式可以是多個值

3)條件語句每次循環都會唄重新檢查,因此不建議在條件語句中使用函數,儘量提前計算好條件並以變量或常量代替

3)左大括號必須和條件語句在同一行

例如:不同形式的三種for循環

package main


import "fmt"


func main() {
    //方式一
    a := 1
    for {
        a++
        if a > 3 {
            break
        }
    }
    fmt.Println(a)


    //方式二
    b := 1
    for b <= 3 {
        b++
    }
    fmt.Println(b)


    //方式三
    c := 1
    for i := 0; i < 3; i++ {
        c++
    }
    fmt.Println(c)
}

輸出:
API server listening at: 127.0.0.1:17197
4
4
4

3.選擇語句switch

1)可以使用任何類型或表達式作爲條件語句

2)不需要寫break,一旦條件符合自動終止

3)如果希望繼續執行下一個case,需要使用fallthrough語句

4)支持一個初始化表達式(可以是並行方式),右側需要跟分號

5)左大括號必須和條件語句在同一行

實例:

package main


import "fmt"


func main() {
    fmt.Println("方式一")
    a := 1
    switch a {
    case 0:
        fmt.Println("a = 0")
    case 1:
        fmt.Println("a = 1")
    }
    fmt.Println(a)


    fmt.Println("方式二")
    b := 1
    switch {
    case b >= 0:
        fmt.Println("b = 0")
        fallthrough
    case b >= 1:
        fmt.Println("b = 1")
    }
    fmt.Println(b)


    fmt.Println("方式三")
    switch c := 1; {
    case c >= 0:
        fmt.Println("c = 0")
        fallthrough
    case c >= 1:
        fmt.Println("c = 1")
    }
}

輸出:
API server listening at: 127.0.0.1:14256
方式一
a = 1
1
方式二
b = 0
b = 1
1
方式三
c = 0
c = 1

4.跳轉語句 goto,break,continue

1)三個語法都可以配合標籤使用

2)標籤名區分大小寫,若不使用會造成編譯錯誤

3)break與continue配合標籤可用於多次循環的跳出

4)goto是調整執行位置,與其他2個語句配合標籤的結果並不相同

實例:

package main


import "fmt"


func main() {
    fmt.Println("方式一")
LABEL:
    for {
        for i := 0; i < 10; i++ {
            if i > 2 {
                break LABEL
            } else {
                fmt.Println(i)
            }
        }
    }


    fmt.Println("方式二")
LABEL1:
    for i := 0; i < 10; i++ {
        for {
            fmt.Println(i)
            continue LABEL1
        }
    }
}

輸出:
API server listening at: 127.0.0.1:37291
方式一
0
1
2
方式二
0
1
2
3
4
5
6
7
8
9

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章