Go switch 语句


switch 语句

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

这个switchGo 中的语句与 C、C++、Java、JavaScript 和 PHP 中的语句类似。不同之处在于它只运行匹配的情况,因此不需要break陈述。


单例开关语法

语法

switch expression {
case x:
   // code block
case y:
   // code block
case z:
...
default:
   // code block
}

它是这样工作的:

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

Single-Case 开关示例

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

示例

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关键字指定在没有大小写匹配的情况下运行的一些代码:

示例

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
亲自试一试 »

围棋练习

通过练习测试一下

练习:

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

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

开始练习