📅  最后修改于: 2023-12-03 15:15:21.387000             🧑  作者: Mango
在 Go 语言中,Switch 语句是一种流程控制语句,用于根据不同的情况执行不同的代码块。它通常用于替代一系列的 if-else 语句,从而使代码更简单和易于阅读。
switch expression {
case valueOne:
// Block of code to be executed if expression == valueOne
case valueTwo:
// Block of code to be executed if expression == valueTwo
default:
// Block of code to be executed if expression is not equal to any of the above values
}
上面的语法中,expression
可以是任意类型的变量或表达式。valueOne
和 valueTwo
是 expression
的某些可能的取值。代码块在每个 case
后面都必须用花括号括起来。
如果 expression
的值等于某个 case
后面的值,那么与此 case
关联的代码块将被执行。如果 expression
的值不等于任何 case
后面的值,那么与 default
关联的代码块将被执行(如果存在默认块的话)。
以下是一个简单的例子:
package main
import "fmt"
func main() {
day := "Sunday"
switch day {
case "Monday":
fmt.Println("Today is Monday")
case "Tuesday":
fmt.Println("Today is Tuesday")
case "Wednesday":
fmt.Println("Today is Wednesday")
case "Thursday":
fmt.Println("Today is Thursday")
case "Friday":
fmt.Println("Today is Friday")
case "Saturday":
fmt.Println("Today is Saturday")
case "Sunday":
fmt.Println("Today is Sunday")
default:
fmt.Println("Invalid day")
}
}
上面的代码输出结果是 Today is Sunday
。
在 Go 语言中,case 子句可以是任意类型的常量表达式,并且可以包含多个条件。例如:
package main
import "fmt"
func main() {
score := 89
switch {
case score >= 90:
fmt.Println("Grade: A")
case score >= 80 && score < 90:
fmt.Println("Grade: B")
case score >= 70 && score < 80:
fmt.Println("Grade: C")
case score >= 60 && score < 70:
fmt.Println("Grade: D")
default:
fmt.Println("Grade: F")
}
}
上面的代码输出结果是 Grade: B
。
Go 语言的 switch 还可以用于区分不同类型的值。这种语法被称为 type switch。以下是一个简单的例子:
package main
import "fmt"
func printType(x interface{}) {
switch x.(type) {
case int:
fmt.Println("Type: int")
case float64:
fmt.Println("Type: float64")
case string:
fmt.Println("Type: string")
default:
fmt.Println("Unknown Type")
}
}
func main() {
printType(5)
printType(3.14)
printType("Foo")
printType(true)
}
上面的代码输出结果是:
Type: int
Type: float64
Type: string
Unknown Type
Switch 语句是一种流程控制语句,用于根据不同的情况执行不同的代码块。它通常用于替代一系列的 if-else 语句,从而使代码更简单和易于阅读。
在 Go 语言中,case 子句可以是任意类型的常量表达式,并且可以包含多个条件。Switch 语句还可以用于区分不同类型的值,称为 type switch。