go中switch语句的用法详解

 更新时间:2023年09月05日 10:41:36   作者:小万哥  
在Go中的switch语句类似于C、C++、Java、JavaScript和PHP中的switch语句,不同之处在于它只执行匹配的case,因此不需要使用break语句,下面我们就一起来学习一下switch语句的具体使用吧

switch语句

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

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

单一case的switch语法

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

它的工作方式如下:

  • 表达式被评估一次。
  • switch表达式的值与每个case的值进行比较。
  • 如果匹配,则执行相关的代码块。
  • 默认关键字是可选的。它指定了如果没有匹配的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("星期日")
   }
}

结果:

星期四

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是一")
   case "b":
      fmt.Println("a是b")
   }
}

结果:

./prog.go:11:2: 无法将类型为untyped string的"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("无效的日期编号")
   }
}

结果:

奇数工作日

到此这篇关于go中switch语句的用法详解的文章就介绍到这了,更多相关go switch内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • golang中beego入门

    golang中beego入门

    Beego是一个基于Go语言的开源框架,用于构建Web应用程序和API,本文主要介绍了golang中beego入门,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • Golang编程并发工具库MapReduce使用实践

    Golang编程并发工具库MapReduce使用实践

    这篇文章主要为大家介绍了Golang并发工具库MapReduce的使用实践,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • 完美解决go Fscanf 在读取文件时出现的问题

    完美解决go Fscanf 在读取文件时出现的问题

    这篇文章主要介绍了完美解决go Fscanf 在读取文件时出现的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • golang包循环引用的几种解决方案总结

    golang包循环引用的几种解决方案总结

    golang有包循环引用问题,用过的应该都知道,下面这篇文章主要给大家介绍了关于golang包循环引用的几种解决方案,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • golang 实现两个结构体复制字段

    golang 实现两个结构体复制字段

    这篇文章主要介绍了golang 实现两个结构体复制字段,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • Go标准库net/http包的实现

    Go标准库net/http包的实现

    net/http是Go官方自带的 HTTP 框架,不用装任何第三方库,本文就来详细的介绍一下Go标准库net/http包的实现,感兴趣的可以了解一下
    2026-03-03
  • 用go实现反向代理的代码示例

    用go实现反向代理的代码示例

    当实现反向代理时,Go语言是一个强大而受欢迎的选择,Go具有出色的并发性和网络编程支持,使其成为构建高性能反向代理的理想工具,在本文中,我将介绍如何使用Go语言实现一个简单的反向代理服务器,并提供相应的源代码,需要的朋友可以参考下
    2023-06-06
  • GO接收GET/POST参数及发送GET/POST请求的实例详解

    GO接收GET/POST参数及发送GET/POST请求的实例详解

    这篇文章主要介绍了GO接收GET/POST参数及发送GET/POST请求,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • 浅谈golang中的&^位清空操作

    浅谈golang中的&^位清空操作

    这篇文章主要介绍了浅谈golang中的&^位清空操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Go语言MD5加密用法实例

    Go语言MD5加密用法实例

    这篇文章主要介绍了Go语言MD5加密用法,实例分析了Go语言MD5加密的使用技巧,需要的朋友可以参考下
    2015-03-03

最新评论