📜  Go 中的 Switch 语句(1)

📅  最后修改于: 2023-12-03 15:15:21.387000             🧑  作者: Mango

Go 中的 Switch 语句

在 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 可以是任意类型的变量或表达式。valueOnevalueTwoexpression 的某些可能的取值。代码块在每个 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

多条件 switch

在 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

Type switch

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。