golang學習筆記8:控制結構

if-else 結構

if condition1 { // do something} 
else if condition2 { // do something else}
else { // catch-all or default}

關鍵字 if 和 else 之後的左大括號 { 必須和關鍵字在同一行,如果你使用了 else-if 結構,則前段代碼塊的右大括號 } 必須和 else-if 關鍵字在同一行。這兩條規則都是被編譯器強制規定的。

多返回值函數

func mySqrt(f float64) (v float64, ok bool) {   
 if f < 0 { return } // error case
    return math.Sqrt(f),true}
 func main() {
   t, ok := mySqrt(25.0)  
  if ok {
     fmt.Println(t) 
   }
}

switch 結構

package mainimport "fmt"func main() {
    var num1 int = 100
    switch num1 {   
        case 98, 99:
        fmt.Println("It's equal to 98")   
        case 100: 
        fmt.Println("It's equal to 100")  
        default:
        fmt.Println("It's not equal to 98 or 100")
    }
}

輸出:It's equal to 100

如果在執行完每個分支的代碼後,還希望繼續執行後續分支的代碼,可以使用 fallthrough 關鍵字來達到目的。

可選的 default 分支可以出現在任何順序,但最好將它放在最後。它的作用類似與 if-else 語句中的 else,表示不符合任何已給出條件時,執行相關語句。

switch 語句的還可以包含一個初始化語句。

在下面這個代碼片段中,變量 a 和 b 被平行初始化,然後作爲判斷條件:

switch a, b := x[i], y[j]; { 
   case a < b: t = -1
    case a == b: t = 0
    case a > b: t = 1
}

for結構

package mainimport "fmt"func main() {   
   for i := 0; i < 5; i++ {
        fmt.Printf("This is the %d iteration\n", i)
    }
}

Break 與 continue

一個 break 的作用範圍爲該語句出現後的最內部的結構,它可以被用於任何形式的 for 循環(計數器、條件判斷等)。但在 switch 或 select 語句中,break 語句的作用結果是跳過整個代碼塊,執行後續的代碼。 關鍵字 continue 忽略剩餘的循環體而直接進入下一次循環的過程,但不是無條件執行下一次循環,執行之前依舊需要滿足循環的判斷條件。 另外,關鍵字 continue 只能被用於 for 循環中。

標籤與 goto

for、switch 或 select 語句都可以配合標籤(label)形式的標識符使用,即某一行第一個以冒號(:)結尾的單詞(gofmt 會將後續代碼自動移至下一行)。

(標籤的名稱是大小寫敏感的,爲了提升可讀性,一般建議使用全部大寫字母)

package main
import "fmt"
func main() {
LABEL1:  
  for i := 0; i <= 5; i++ {    
    for j := 0; j <= 5; j++ {           
     if j == 4 {      
               continue LABEL1
            }
            fmt.Printf("i is: %d, and j is: %d\n", i, j)
        }
    }
}

本例中,continue 語句指向 LABEL1,當執行到該語句的時候,就會跳轉到 LABEL1 標籤的位置。

您可以看到當 j==4 和 j==5 的時候,沒有任何輸出:標籤的作用對象爲外部循環,因此 i 會直接變成下一個循環的值,而此時 j 的值就被重設爲 0,即它的初始值。如果將 continue 改爲 break,則不會只退出內層循環,而是直接退出外層循環了。另外,還可以使用 goto 語句和標籤配合使用來模擬循環。

package main
func main() {
    i:=0
    HERE:
        print(i)
        i++ 
       if i==5 { 
           return
        }
        goto HERE
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章