菜单
×
   ❮   
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 语句。


单 case switch 语法

语法

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

工作原理如下

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

单 case switch 示例

下面的示例使用星期几的数字来计算星期几的名称

示例

package main
import ("fmt")

func main() {
  day := 4

  switch 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("星期日")
  }
}

结果

Thursday
自己动手试一试 »


default 关键字

default关键字指定了在没有 case 匹配时运行的一些代码。

示例

package main
import ("fmt")

func main() {
  day := 8

  switch 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("不是一个工作日")
  }
}

结果

不是一个工作日
自己动手试一试 »

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

开始练习


×

联系销售

如果您想将 W3Schools 服务用于教育机构、团队或企业,请发送电子邮件给我们
sales@w3schools.com

报告错误

如果您想报告错误,或想提出建议,请发送电子邮件给我们
help@w3schools.com

W3Schools 经过优化,旨在方便学习和培训。示例可能经过简化,以提高阅读和学习体验。教程、参考资料和示例会不断审查,以避免错误,但我们无法保证所有内容的完全正确性。使用 W3Schools 即表示您已阅读并接受我们的使用条款Cookie 和隐私政策

版权所有 1999-2024 Refsnes Data。保留所有权利。W3Schools 由 W3.CSS 提供支持