golang?switch的語法使用小結(jié)
在 Go 語言中,switch 語句提供了一種根據(jù)表達(dá)式的值執(zhí)行不同代碼塊的機(jī)制。它比多個 if-else 語句更清晰、更易于維護(hù),尤其適用于多路分支的情況。
基本語法
switch expression {
case value1:
// 表達(dá)式等于 value1 時執(zhí)行的代碼塊
case value2:
// 表達(dá)式等于 value2 時執(zhí)行的代碼塊
...
default:
// 以上條件都不滿足時執(zhí)行的代碼塊(可選)
}示例代碼
以下是一些 switch 語句的常見用法示例:
1. 基本的switch語句
package main
import "fmt"
func main() {
day := 3
switch day {
case 1:
fmt.Println("星期一")
case 2:
fmt.Println("星期二")
case 3:
fmt.Println("星期三")
case 4:
fmt.Println("星期四")
case 5:
fmt.Println("星期五")
case 6:
fmt.Println("星期六")
case 7:
fmt.Println("星期日")
default:
fmt.Println("無效的天數(shù)")
}
}2.不帶表達(dá)式的switch
在 Go 中,switch 后面的表達(dá)式可以省略,此時相當(dāng)于 switch true,常用于替代多個 if-else 語句。
package main
import "fmt"
func main() {
num := 5
switch {
case num < 0:
fmt.Println("負(fù)數(shù)")
case num == 0:
fmt.Println("零")
case num > 0 && num < 10:
fmt.Println("正數(shù)且小于 10")
case num >= 10:
fmt.Println("正數(shù)且大于或等于 10")
default:
fmt.Println("不可能的情況")
}
}3. 多值匹配
可以為一個 case 指定多個匹配值,值之間用逗號分隔。
package main
import "fmt"
func main() {
grade := 'B'
switch grade {
case 'A', 'B', 'C':
fmt.Println("成績良好")
case 'D':
fmt.Println("成績及格")
case 'E', 'F':
fmt.Println("成績不及格")
default:
fmt.Println("無效的成績等級")
}
}4. 類型判斷
switch 還可以用于判斷變量的類型,這在處理接口類型時非常有用。
package main
import "fmt"
func main() {
var value interface{} = "Hello, Go!"
switch v := value.(type) {
case int:
fmt.Printf("整數(shù): %d\n", v)
case string:
fmt.Printf("字符串: %s\n", v)
case bool:
fmt.Printf("布爾值: %v\n", v)
case nil:
fmt.Println("空值")
default:
fmt.Printf("未知類型: %T\n", v)
}
}注意事項(xiàng)
- 自動跳轉(zhuǎn):Go 語言的 switch 語句不會自動從一個 case 跳轉(zhuǎn)到下一個 case,每個 case 的代碼塊執(zhí)行完成后會自動退出 switch 語句。
- default 子句:default 子句是可選的,用于處理所有不匹配的情況。
- 變量聲明:可以在 switch 語句中聲明變量。
希望這些示例能幫助你更好地理解和使用 Go 語言中的 switch 語句。
你希望在匹配某個 case 后,繼續(xù)執(zhí)行下一個 case 的代碼塊,而不是退出 switch 語句。這時就可以使用 fallthrough。
以下是一個使用 fallthrough 的示例:
package main
import "fmt"
func main() {
day := 3
switch day {
case 1:
fmt.Println("今天是星期一")
fallthrough
case 2:
fmt.Println("明天是星期二")
fallthrough
case 3:
fmt.Println("后天是星期三")
fallthrough
case 4:
fmt.Println("大后天是星期四")
fallthrough
case 5:
fmt.Println("再后天是星期五")
fallthrough
case 6:
fmt.Println("又是星期六了")
fallthrough
case 7:
fmt.Println("星期日到了")
default:
fmt.Println("無效的天數(shù)")
}
}輸出
今天是星期一
明天是星期二
后天是星期三
大后天是星期四
再后天是星期五
又是星期六了
星期日到了
說明
- fallthrough 的作用:在每個 case 的末尾使用 fallthrough,可以讓程序繼續(xù)執(zhí)行下一個 case 的代碼,即使下一個 case 的條件不匹配。
- 執(zhí)行流程:當(dāng) day 的值為 3 時,程序匹配到 case 3,并執(zhí)行 fmt.Println("后天是星期三"),然后 fallthrough 使程序繼續(xù)執(zhí)行 case 4 的代碼,依此類推。
- default 子句:如果 day 的值超出了 1 到 7 的范圍,程序?qū)?zhí)行 default 子句中的代碼。
注意事項(xiàng)
- 顯式意圖:fallthrough 需要顯式地寫在 case 代碼塊的末尾,不能省略。
- 謹(jǐn)慎使用:雖然 fallthrough 提供了額外的控制流程,但過度使用可能會使代碼難以理解,應(yīng)根據(jù)實(shí)際需求謹(jǐn)慎使用。
到此這篇關(guān)于golang switch的語法使用小結(jié)的文章就介紹到這了,更多相關(guān)golang switch內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Go語言實(shí)現(xiàn)高并發(fā)百萬QPS的關(guān)鍵技術(shù)棧
Go語言憑借其輕量級goroutine和高效的調(diào)度器,天然適合高并發(fā)場景,Go語言通過Goroutine調(diào)度優(yōu)化、I/O多路復(fù)用等技術(shù)實(shí)現(xiàn)高并發(fā),結(jié)合性能調(diào)優(yōu)與架構(gòu)設(shè)計,可支撐百萬QPS,延遲低于5ms,支持未來擴(kuò)展2025-05-05
Go語言反射reflect.Value實(shí)現(xiàn)方法的調(diào)用
本文主要介紹了Go語言反射reflect.Value實(shí)現(xiàn)方法的調(diào)用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-05-05
Golang使用反射的動態(tài)方法調(diào)用詳解
Go是一種靜態(tài)類型的語言,提供了大量的安全性和性能。這篇文章主要和大家介紹一下Golang使用反射的動態(tài)方法調(diào)用,感興趣的小伙伴可以了解一下2023-03-03

