1. 程式人生 > >GO基礎學習之流程

GO基礎學習之流程

流程控制包含分三大類:條件判斷,迴圈控制和無條件跳轉。
1、if
if 也許是各種程式語言中最常見的了,它的語法概括起來就是:如果滿足條件就做某事,否則做另一件事。
注:Go裡的if 條件判斷語句中不需要括號,如下程式碼所示

if x > 10 {
    fmt.Println("x is greater than 10")
} else {
    fmt.Println("x is less than 10")
}

 

注:Go的if 還有一個強大的地方就是條件判斷語句裡面允許宣告一個變數,這個變數的作用域只能在該條件邏輯塊內,其
他地方就不起作用了,如下所示

// 計算獲取值 x, 然後根據 x 返回的大小,判斷是否大於 10 。
if x := computedValue(); x > 10 {
    fmt.Println("x is greater than 10")
} else {
    fmt.Println("x is less than 10")
}
// 這個地方如果這樣呼叫就編譯出錯了,因為 x 是條件裡面的變數
    fmt.Println(x)


2、goto
Go有 goto 語句——請明智地使用它。用 goto 跳轉到必須在當前函式內定義的標籤。

//例如假設這樣一個迴圈:
func myFunc() {
    i := 0
Here:
// 這行的第一個詞,以冒號結束作為標籤
    println(i)
    i++
    goto Here
// 跳轉到 Here 去
}


注:標籤名是大小寫敏感的。

3、for
Go裡面最強大的一個控制邏輯就是 for ,它即可以用來迴圈讀取資料,又可以當作 while 來控制邏輯,還能迭代操
作。它的語法如下:
          for expression1; expression2; expression3 {
                //...
            }
expression1 、 expression2 和 expression3 都是表示式,其中 expression1 和 expression3 是變數宣告或者
函式呼叫返回值之類的, expression2是用來條件判斷, expression1 在迴圈開始之前呼叫, expression3 在每輪迴圈結束之時呼叫。


4、for的 while 的功能。

sum := 1
for sum < 1000 {
    sum += sum
}

在迴圈裡面有兩個關鍵操作 break 和 continue , break 操作是跳出當前迴圈, continue 是跳過本次迴圈。當巢狀
過深的時候, break 可以配合標籤使用,即跳轉至標籤所指定的位置,

5、switch
有些時候你需要寫很多的 if-else 來實現一些邏輯處理,這個時候程式碼看上去就很醜很冗長,而且也不易於以後的維
護,這個時候 switch 就能很好的解決這個問題。它的語法如下

switch sExpr {
case expr1:
    some instructions
case expr2:
    some other instructions
case expr3:
    some other instructions
default:
    other code
}


注:sExpr 和 expr1 、 expr2 、 expr3 的型別必須一致。Go的 switch 非常靈活,表示式不必是常量或整數,執行的過程
從上至下,直到找到匹配項;而如果 switch 沒有表示式,它會匹配 true 。