Go 教程

浏览10432
更新时间2025-08-13

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 实例

下面的例子使用一周中的 weekday 编号来计算一周中的 weekday 名称:

实例

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
(无法将 "b"(无类型字符串)用作 int 类型)

多分支 switch 语句

在 switch 语句中,每个 case 可以有多个值:

语法

switch 表达式 {  
case x, y:  
   // 如果表达式的值为 x 或 y,则执行此代码块  
case v, w:  
   // 如果表达式的值为 v 或 w,则执行此代码块  
case z:  
...  
default:  
   // 如果表达式的值不在任何 case 中,则执行此代码块  
}

多分支 switch 示例

下面的示例使用工作日编号来返回不同的文本:

实例

package main  
import ("fmt")  
  
func main() {  
   day := 5  
  
   switch day {  
   case 1,3,5:  
    fmt.Println("奇数工作日")  
   case 2,4:  
     fmt.Println("偶数工作日")  
   case 6,7:  
    fmt.Println("周末")  
  default:  
    fmt.Println("无效的工作日编号")  
  }  
}

结果:

奇数工作日

相关视频

更多

免费

php8,我来也
初级php8,我来也

34万次学习

收藏

免费

Thinkphp6.0正式版视频教程
中级Thinkphp6.0正式版视频教程

39.6万次学习

收藏

免费

细说PHP第一季
中级细说PHP第一季

31万次学习

收藏

精品课程

更多
前端入门_HTML5
前端入门_HTML5

共29课时

65万人学习

CSS视频教程-玉女心经版
CSS视频教程-玉女心经版

共25课时

41.3万人学习

JavaScript极速入门_玉女心经系列
JavaScript极速入门_玉女心经系列

共43课时

76.7万人学习

独孤九贱(1)_HTML5视频教程
独孤九贱(1)_HTML5视频教程

共25课时

64.1万人学习

独孤九贱(2)_CSS视频教程
独孤九贱(2)_CSS视频教程

共22课时

24.4万人学习

独孤九贱(3)_JavaScript视频教程
独孤九贱(3)_JavaScript视频教程

共28课时

36.2万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时

133.3万人学习

热门下载

更多
phpStudy 2018最新版
phpStudy 2018最新版

集成PHP7,16种组合,超全大合集

下载

VC9 32位
VC9 32位

VC9 32位 phpstudy集成安装环境运行库

下载

VC11 32位
VC11 32位

VC11 32位 phpstudy集成安装环境运行库​

下载

php程序员工具箱完整版
php程序员工具箱完整版

程序员工具箱 v1.0 php集成环境

下载

VC14 32位
VC14 32位

VC14 32位 phpstudy安装环境运行库

下载

SublimeText3汉化版
SublimeText3汉化版

中文版,非常好用

下载

Notepad++ Windows版
Notepad++ Windows版

Notepad++ 8.9.7 Windows版官方安装包,适合 Windows 用户进行代码编辑、文本处理、语法高亮和插件扩展配置。

下载