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 。