在 Go 语言中,switch
和 case
用于根据不同的条件执行不同的代码块。以下是一个示例:
package main
import "fmt"
func main() {
day := "Monday"
switch day {
case "Monday":
fmt.Println("今天是周一")
case "Tuesday":
fmt.Println("今天是周二")
case "Wednesday":
fmt.Println("今天是周三")
case "Thursday":
fmt.Println("今天是周四")
case "Friday":
fmt.Println("今天是周五")
case "Saturday":
fmt.Println("今天是周六")
case "Sunday":
fmt.Println("今天是周日")
default:
fmt.Println("无效的日期")
}
}
在上述示例中,switch
后面跟着要判断的表达式(在这个例子中是 day
变量),然后每个 case
后面跟着可能的匹配值和相应的执行代码块。如果没有任何 case
匹配,就会执行 default
中的代码块。
case
中的值可以是常量、字符串、整数等。
然后对比一下和if else的区别
在 Go 语言中,`switch` 和 `if-else` 都用于条件判断,但它们有一些区别:
1. 表达式类型: - `if-else` 中的条件表达式可以是任何布尔表达式。 - `switch` 中的表达式通常是一个值(但也可以是一个计算结果为值的表达式),然后与 `case` 中的值进行比较。
2. 比较方式: - `if-else` 按照条件的逻辑真假来决定执行的分支。 - `switch` 则是将表达式的值与每个 `case` 的值进行匹配。
3. 简洁性: - 对于一些基于值的简单条件判断,`switch` 语句可能更加简洁和直观,特别是当有多个可能的值需要判断时。
4. 穿透性: - 在 `switch` 中,默认情况下每个 `case` 执行完毕后会自动跳出 `switch` 语句,除非使用 `fallthrough` 关键字来强制执行下一个 `case` 。 - `if-else` 则不存在这种自动穿透的情况。
5. 类型灵活性: - `if-else` 在条件判断的表达式类型上更加灵活。
总的来说,选择使用 `switch` 还是 `if-else` 取决于具体的条件判断逻辑和代码的可读性、简洁性需求。