📅  最后修改于: 2023-12-03 15:31:03.282000             🧑  作者: Mango
在GO语言中,switch语句用于多个条件分支的情况。它类似于其他语言中的switch语句,但是在GO语言中具有一些独特的语法特性。
switch expression {
case value1:
// do something
case value2:
// do something
default:
// do something
}
expression
可以是任何类型的值,但必须是可比较的类型。case
后面跟着一个特定的值,如果expression
的值等于某个case
的值,则执行该case
下的代码。default
是可选的,如果没有任何case
匹配,则会执行default
下的代码。GO语言的switch
语句可以使用任何可比较类型进行比较,例如int
,string
,bool
等等。
func main() {
num := 1
switch num {
case 1:
fmt.Println("One")
case 2:
fmt.Println("Two")
default:
fmt.Println("None")
}
}
输出:
One
对于GO语言的switch
语句而言,每个case
下都可以使用表达式来进行比较。
func main() {
num := 3
switch {
case num > 0 && num < 10:
fmt.Println("Between 1 and 10")
case num > 10 && num < 20:
fmt.Println("Between 11 and 20")
default:
fmt.Println("Out of range")
}
}
输出:
Out of range
fallthrough
关键字用于使switch
语句执行后续的case
语句,而不考虑case
语句的表达式是否匹配。
func main() {
num := 2
switch num {
case 1:
fmt.Println("One")
fallthrough
case 2:
fmt.Println("Two")
case 3:
fmt.Println("Three")
}
}
输出:
Two
Three
在GO语言中,interface{}
类型可以保存任何类型的值。通过类型断言,我们可以在switch
语句中使用它。
func getType(i interface{}) {
switch i.(type) {
case int:
fmt.Println("Integer")
case string:
fmt.Println("String")
default:
fmt.Println("Unknown")
}
}
func main() {
getType(5)
getType("Hello")
getType(true)
}
输出:
Integer
String
Unknown
package main
import (
"fmt"
)
func getType(i interface{}) {
switch i.(type) {
case int:
fmt.Println("Integer")
case string:
fmt.Println("String")
default:
fmt.Println("Unknown")
}
}
func main() {
//基本语法
num := 1
switch num {
case 1:
fmt.Println("One")
case 2:
fmt.Println("Two")
default:
fmt.Println("None")
}
//比较表达式
num = 3
switch {
case num > 0 && num < 10:
fmt.Println("Between 1 and 10")
case num > 10 && num < 20:
fmt.Println("Between 11 and 20")
default:
fmt.Println("Out of range")
}
//fallthrough关键字
num = 2
switch num {
case 1:
fmt.Println("One")
fallthrough
case 2:
fmt.Println("Two")
case 3:
fmt.Println("Three")
}
//switch和类型断言
getType(5)
getType("Hello")
getType(true)
}