流程控制

switch

预计阅读时间1 分 6 views

前言

在 Go 语言中,switch 语句允许我们在多个选项中执行一个代码块。它提供了一种更加简洁和清晰的方式来处理多个条件,而不需要使用多个 if...else 语句。switch 语句的结构非常适合处理多种情况的逻辑判断。

作用

switch 语句用于根据表达式的值选择性地执行不同的代码块。它使代码更易读、更简洁,并且避免了使用多个 if...else 语句时可能出现的复杂性。

使用场景

  1. 处理多个可能的情况: 当需要根据一个变量的不同值执行不同的代码块时使用。例如,基于一天的数字值打印相应的星期几。
  2. 替代复杂的 if…else 语句: 当有多个条件需要判断时,使用 switch 可以使代码更加清晰和易于维护。
  3. 实现多值匹配: 可以在一个 case 语句中匹配多个值,从而减少冗余的代码。

示例

  1. Go 基本的 switch 语句示例
   package main
   import "fmt"

   func main() {
     dayOfWeek := 3

     switch dayOfWeek {
       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("无效的日期")
     }
   }

输出:

   星期二

在这个示例中,我们将 3 赋值给 dayOfWeek 变量。switch 语句检查 dayOfWeek 的值,并执行与 case 3 匹配的代码块,输出“星期二”。

  1. Go switch 语句与 fallthrough 示例
   package main
   import "fmt"

   func main() {
     dayOfWeek := 3

     switch dayOfWeek {
       case 1:
         fmt.Println("星期日")
       case 2:
         fmt.Println("星期一")
       case 3:
         fmt.Println("星期二")
         fallthrough
       case 4:
         fmt.Println("星期三")
       case 5:
         fmt.Println("星期四")
       case 6:
         fmt.Println("星期五")
       case 7:
         fmt.Println("星期六")
       default:
         fmt.Println("无效的日期")
     }
   }

输出:

   星期二
   星期三

在这个示例中,我们使用了 fallthrough 关键字。这意味着在 case 3 的代码块执行后,case 4 的代码块也会被执行,从而输出“星期三”。

  1. Go switch 语句中的多个 case 示例
   package main
   import "fmt"

   func main() {
     dayOfWeek := "星期日"

     switch dayOfWeek {
       case "星期六", "星期日":
         fmt.Println("周末")
       case "星期一", "星期二", "星期三", "星期四", "星期五":
         fmt.Println("工作日")
       default:
         fmt.Println("无效的日期")
     }
   }

输出:

   周末

在这个示例中,我们使用了多个值来匹配单一的 casecase "星期六", "星期日" 会匹配到“周末”,而其他工作日则输出“工作日”。

  1. Go 没有表达式的 switch 语句示例
   package main
   import "fmt"

   func main() {
     numberOfDays := 28

     // 没有表达式的 switch
     switch {
       case numberOfDays == 28:
         fmt.Println("这是二月")
       default:
         fmt.Println("不是二月")
     }
   }

输出:

   这是二月

在这个示例中,switch 语句没有表达式,因此它会判断每个 case 语句的布尔值。在 case numberOfDays == 28 中,条件为 true,所以输出“这是二月”。

  1. Go switch 语句与可选语句示例
   package main
   import "fmt"

   func main() {
     // 带有可选语句的 switch
     switch day := 4; 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("无效的日期")
     }
   }

输出:

   星期三

在这个示例中,我们在 switch 语句中使用了 day := 4 作为可选语句。这个语句会被赋值给 day 变量,然后根据值匹配到 case 4,因此输出“星期三”。

结语

switch 语句提供了一种有效的方式来处理多重条件判断,比起使用多个 if...else 语句更加简洁和清晰。通过使用 fallthrough,多个 case 值匹配,或是没有表达式的 switch,可以灵活地满足不同的需求。掌握 switch 语句的使用可以帮助我们编写更易读和维护的代码。

Leave a Comment

分享此文档

switch

或复制链接

内容