Menu
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

Go switch 语句


switch 语句

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

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


单一情况 switch 语法

语法

switch 表达式 {
case x
  // 代码块
case y
  // 代码块
case z
...
default
  // 代码块
}

它是这样工作的

  • 表达式只会被评估一次
  • switch 表达式的值与每个 case 的值进行比较
  • 如果有匹配,则执行相关的代码块
  • default 关键字是可选的。它指定了一些代码,如果没有任何 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 关键字指定了一些代码,如果没有任何 case 匹配,则运行这些代码

示例

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") } }

开始练习


×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.