Go switch 语句

switch 语句

使用 switch 语句选择要执行的多个代码块之一。

Go 中的 switch 语句类似于 C、C++、Java、JavaScript 和 PHP 中的语句。 不同之处在于它只运行匹配的案例,因此不需要 break 语句。


Single-Case switch 语句

语法

switch expression {
case x:
   // 代码块
case y:
   // 代码块
case z:
...
default:
   // 代码块
}

这就是它的工作原理:

  • 表达式被计算一次
  • switch 表达式的值与每个 case
  • 的值进行比较
  • 如果匹配,则执行关联的代码块
  • default 关键字是可选的。 如果没有 case 匹配
  • ,它会指定一些要运行的代码

Single-Case switch 示例

下面的示例使用工作日数字来计算工作日名称:

实例

package main
import ("fmt")

func main() {
  day := 4

  switch day {
  case 1:
    fmt.Println("Monday")
  case 2:
    fmt.Println("Tuesday")
  case 3:
    fmt.Println("Wednesday")
  case 4:
    fmt.Println("Thursday")
  case 5:
    fmt.Println("Friday")
  case 6:
    fmt.Println("Saturday")
  case 7:
    fmt.Println("Sunday")
  }
}

结果:

Thursday
亲自试一试 »


default 默认关键字

default 关键字指定在没有大小写匹配时要运行的一些代码:

实例

package main
import ("fmt")

func main() {
  day := 8

  switch day {
  case 1:
    fmt.Println("Monday")
  case 2:
    fmt.Println("Tuesday")
  case 3:
    fmt.Println("Wednesday")
  case 4:
    fmt.Println("Thursday")
  case 5:
    fmt.Println("Friday")
  case 6:
    fmt.Println("Saturday")
  case 7:
    fmt.Println("Sunday")
  default:
    fmt.Println("Not a weekday")
  }
}

结果:

Not a weekday
亲自试一试 »

所有 case 值都应与 switch 表达式具有相同的类型。 否则编译器会报错:

实例

package main
import ("fmt")

func main() {
  a := 3

  switch a {
  case 1:
    fmt.Println("a is one")
  case "b":
    fmt.Println("a is b")
  }
}

结果:

./prog.go:11:2: cannot use "b" (type untyped string) as type int
亲自试一试 »

Go 练习

通过练习测试自己

练习:

插入缺少的部分以完成以下 switch 语句。

package main   
import ("fmt") 
func main() { var day = 2 switch { (1): fmt.Print("Saturday") (2): fmt.Print("Sunday") } }

开始练习