switch 語句基本結構
switch 條件表達式 {
case 常量表達式1:
語句 1
case 常量表達式2:
語句 2
.
.
.
case 常量表達式n:
語句 n
default:
語句 n+1
}
執行流程
(1)計算條件表達式的值value
(2)如果value滿足某條case語句,則執行該語句,執行完跳出switch語句
(3)如果value不滿足所有的case語句:
(3.1)如果有default,則執行該語句,執行完跳出switch語句
(3.2)如果沒有default,則直接跳出switch語句
注意事項
(1)條件表達式可以是任意Go語言支持的數據類型
(3)不需要break語句
(4)default分支為可選項,但最多只能有一個default分支
(5)如果有兩個以上的case分支的常量表達式取得相同的值,則編譯會出錯
多case語句
有時在一條case語句中可以對多個條件值進行測試,任意一個條件滿足都會執行case語句體
func main() {
var test string
fmt.Print("請輸入一個字符串:")
fmt.Scan(&test)
switch test {
case "c":
fmt.Println("c")
case "java":
fmt.Println("java")
case "go", "golang":
fmt.Println("hello golang")
default:
fmt.Println("python")
}
}
// 請輸入一個字符串:go
// hello golang
// 請輸入一個字符串:golang
// hello golang
fallthrough語句
通常情況下,switch語句檢測到符合條件的第一個case語句,就會執行該分支的代碼,執行完會直接跳出switch語句。使用 fallthrough
語句,可以在執行完該case語句后,不跳出,繼續執行下一個case語句。
func main() {
var test string
fmt.Print("請輸入一個字符串:")
fmt.Scan(&test)
switch test {
case "go":
fmt.Println("hello go")
case "golang":
fmt.Println("hello golang")
fallthrough
case "gopher":
fmt.Println("hello gopher")
case "java":
fmt.Println("java")
}
}
// 請輸入一個字符串:go
// hello go
// 請輸入一個字符串:golang
// hello golang
// hello gopher
無條件表達式switch語句
如果switch關鍵字后面沒有條件表達式,則必須在case語句中進行條件判斷,即類似於 if else if
語句
func main() {
var score int
fmt.Print("請輸入成績:")
fmt.Scan(&score)
switch {
case score >= 90:
fmt.Println("good")
case score >= 80 && score < 90:
fmt.Println("well")
case score < 80:
fmt.Println("ok")
}
}
// 請輸入成績:60
// ok
// 請輸入成績:85
// well
小結
平時寫Go語言很少用到switch語句,有時候突然用到,一些細節可能又忘了,所以寫一篇博客總結一下。