Go 語言的分支語句
本文主要學習 Go 語言中的分支語句。一共要介紹的有兩個,分別式?if…else?和?switch…case。他們二者在 Go 語言中都做了新的功能拓展。
Tips:其中還有一個分支語句select…case我們將在Go語言的通道中介紹。
1. if…else
在 Go 語言中?if?關鍵字的作用和其它大部分語言相同,是用于測試某個布爾表達式或布爾值是否為真的。若為真則執(zhí)行if之后{}
中的語句,否則跳過這些語句。如果存在第二個分支,則需要使用?else?關鍵字,還需要增加分支的話就需要使用?else if?關鍵字了。
示例代碼:
代碼塊
- 1?
package main
- 2
- 3?
import "fmt"
- 4
- 5 ?
func main() {
- 6? ? ? ? ?
a := 10
- 7? ? ? ? ?
if a > 10 {
- 8? ? ? ? ? ? ? ? ?
fmt.Println("a大于10")
- 9? ? ? ? ?
} else if a < 0 {
- 10? ? ? ? ? ? ? ?
fmt.Println("a小于0")
- 11? ? ? ?
} else {
- 12? ? ? ? ? ? ? ?
fmt.Println("a的值是", a)
- 13? ? ? ?
}
- 14?
}
- 第 7 行:判斷 a 是否大于 10,顯然不滿足,代碼走向下一個分支?else if。Go 語言中的?if?的條件語句不需要使用?
()
; - 第 9 行:繼續(xù)判斷a是否小于0,顯然也不滿足,走向最后一個分支?else。因為 Go 語言中使用回車符來象征語句結(jié)束,所以?esle?必須寫成?}else{?的形式,不然就識別為?if?語句結(jié)束了;
- 第 11 行:之前的分支條件都不成立,執(zhí)行最后一個分支;
- 第 12 行:打印變量 a 的值。
輸出結(jié)果:

在Go語言中,if?后的條件表達式,還有一種特別的寫法,可以在條件表達式之前寫一個賦值表達式。
if…else 的特殊用法:
代碼塊
- 1?
package main
- 2
- 3?
import "fmt"
- 4
- 5?
func main() {
- 6? ? ? ?
if a := 10; a > 10 { //賦值表達式和條件表達式之間使用;隔開
- 7? ? ? ? ? ? ? ?
fmt.Println("a大于10")
- 8? ? ? ?
} else {
- 9? ? ? ? ? ? ? ??
fmt.Println("a的值是", a)
- 10? ? ?
}
- 11?
}
執(zhí)行結(jié)果:

2. switch…case
Go語言對?switch…case?的功能進行了擴展,它變得更加的通用。switch?之后可以什么都不帶。case?也無需是一個固定值,也可以是一個布爾表達式,而且每一個 case 都是一個獨立的代碼塊,執(zhí)行完了之后立刻跳出?switch,不需要使用?break。所以可以把?if…else?完美的改寫成?switch…case?的形式。
Tips:還有一種?
switch
?語句叫做?type switch
,我們將在學習接口時介紹它
switch…case 傳統(tǒng)用法代碼示例:
代碼塊
- 1 ?
package main
- 2
- 3?
import "fmt"
- 4
- 5?
func main() {
- 6? ? ? ? ?
a := "A"
- 7? ? ? ? ?
switch a {
- 8? ? ? ? ?
case "A", "a":
- 9? ? ? ? ? ? ? ? ?
fmt.Println("分數(shù)區(qū)間為90~100")
- 10? ? ? ?
case "B", "b":
- 11? ? ? ? ? ? ? ?
fmt.Println("分數(shù)區(qū)間為70~89")
- 12? ? ? ?
case "C", "c":
- 13? ? ? ? ? ? ? ?
fmt.Println("分數(shù)區(qū)間為0~70")
- 14? ? ? ?
default:
- 15? ? ? ? ? ? ? ?
fmt.Println("錯誤的評分")
- 16? ? ? ?
}
- 17?
}
- 第 7 行:和傳統(tǒng)用法一致,去求變量 A 的值和那個 case 匹配;
- 第 8 行:case 后面的值使用逗號隔開,用于表示匹配任意一個值;
- 第 14 行:每一個 switch 中最多可以帶一個 default。
輸出結(jié)果:

switch…case Go 語言中的新用法:
代碼塊
- 1?
package main
- 2
- 3?
import "fmt"
- 4
- 5?
func main() {
- 6? ? ? ? ?
a := 50
- 7? ? ? ? ?
switch {
- 8? ? ? ? ?
case a < 60:
- 9? ? ? ? ? ? ? ? ? ?
fmt.Println("不及格")
- 10? ? ? ?
case a < 80:
- 11? ? ? ? ? ? ? ? ?
fmt.Println("良好")
- 12? ? ? ?
case a <= 100:
- 13? ? ? ? ? ? ? ? ?
fmt.Println("優(yōu)秀")
- 14? ? ? ?
default:
- 15? ? ? ? ? ? ? ? ?
fmt.Println("分數(shù)最多為100分")
- 16? ? ? ?
}
- 17?
}
- 第 7 行:switch 后不帶任何參數(shù),直接執(zhí)行第1個 case 的判定;
- 第 8 行:case 后面帶的是一個布爾表達式,若值為 true ,則執(zhí)行其后代碼塊;
- 第 14 行:default 在這里就充當?else?的角色。
輸出結(jié)果:

3. 小結(jié)
本文主要學習了Go語言中的分支結(jié)構(gòu),其中需要注意的是在Go語言中的特殊寫法:
- if?的條件表達式無需使用括號;
- if?的條件表達式之前可以跟一個賦值表達式,與條件表達式之間使用
;
分割; - switch?關鍵字之后可以不帶變量;
- case?關鍵字后面可以跟布爾表達式;
- if…else?語句中,else if?如果特別多的情況下一般建議使用?switc…case?來代替。
文章來源于網(wǎng)絡,侵刪!