1. 程式人生 > GO語言入門 >19 Go 語言的分支語句

19 Go 語言的分支語句

Tips:其中還有一個分支語句select…case我們將在Go語言的通道中介紹。

1. if…else

在 Go 語言中 if 關鍵字的作用和其它大部分語言相同,是用於測試某個布林表示式或布林值是否為真的。若為真則執行if之後{}中的語句,否則跳過這些語句。如果存在第二個分支,則需要使用 else 關鍵字,還需要增加分支的話就需要使用 else if 關鍵字了。

示例程式碼:

package main

import "fmt"

func main() {
    a := 10
    if a > 10 {
        fmt.Println("a大於10")
    } else
if a < 0 { fmt.Println("a小於0") } else { fmt.Println("a的值是", a) } }
  • 第 7 行:判斷 a 是否大於 10,顯然不滿足,程式碼走向下一個分支 else if。Go 語言中的 if 的條件語句不需要使用 ()
  • 第 9 行:繼續判斷a是否小於0,顯然也不滿足,走向最後一個分支 else。因為 Go 語言中使用回車符來象徵語句結束,所以 esle 必須寫成 }else{ 的形式,不然就識別為 if 語句結束了;
  • 第 11 行:之前的分支條件都不成立,執行最後一個分支;
  • 第 12 行:列印變數 a 的值。

輸出結果:

圖片描述

在Go語言中,if 後的條件表示式,還有一種特別的寫法,可以在條件表示式之前寫一個賦值表示式。

if…else 的特殊用法:

package main

import "fmt"

func main() {
    if a := 10; a > 10 {    //賦值表示式和條件表示式之間使用;隔開
        fmt.Println("a大於10")
    } else {
        fmt.Println("a的值是", a)
    }
}

執行結果:

圖片描述

2. switch…case

Go語言對 switch…case 的功能進行了擴充套件,它變得更加的通用。switch

之後可以什麼都不帶。case 也無需是一個固定值,也可以是一個布林表示式,而且每一個 case 都是一個獨立的程式碼塊,執行完了之後立刻跳出 switch,不需要使用 break。所以可以把 if…else 完美的改寫成 switch…case 的形式。

Tips:還有一種 switch 語句叫做 type switch,我們將在學習介面時介紹它

switch…case 傳統用法程式碼示例:

package main

import "fmt"

func main() {
    a := "A"
    switch a {
    case "A", "a":
        fmt.Println("分數區間為90~100")
    case "B", "b":
        fmt.Println("分數區間為70~89")
    case "C", "c":
        fmt.Println("分數區間為0~70")
    default:
        fmt.Println("錯誤的評分")
    }
}
  • 第 7 行:和傳統用法一致,去求變數 A 的值和那個 case 匹配;
  • 第 8 行:case 後面的值使用逗號隔開,用於表示匹配任意一個值;
  • 第 14 行:每一個 switch 中最多可以帶一個 default。

輸出結果:

圖片描述

switch…case Go 語言中的新用法:

package main

import "fmt"

func main() {
    a := 50
    switch {
    case a < 60:
        fmt.Println("不及格")
    case a < 80:
        fmt.Println("良好")
    case a <= 100:
        fmt.Println("優秀")
    default:
        fmt.Println("分數最多為100分")
    }
}
  • 第 7 行:switch 後不帶任何引數,直接執行第1個 case 的判定;
  • 第 8 行:case 後面帶的是一個布林表示式,若值為 true ,則執行其後程式碼塊;
  • 第 14 行:default 在這裡就充當 else 的角色。

輸出結果:

圖片描述

3. 小結

本文主要學習了Go語言中的分支結構,其中需要注意的是在Go語言中的特殊寫法:

  • if 的條件表示式無需使用括號;
  • if 的條件表示式之前可以跟一個賦值表示式,與條件表示式之間使用;分割;
  • switch 關鍵字之後可以不帶變數;
  • case 關鍵字後面可以跟布林表示式;
  • if…else 語句中,else if 如果特別多的情況下一般建議使用 switc…case 來代替。