首页 > 其他分享 >Go语言中的switch语句

Go语言中的switch语句

时间:2023-08-15 23:58:05浏览次数:39  
标签:语句 case code default switch num Go

Go 语言提供了两种主要形式的 switch 语句,它们分别有不同的用途和特点。

1. 基于值的 switch

这种形式的 switch 语句是基于一个表达式的值来决定执行哪个 case 语句块。这与许多其他编程语言中的 switch 语句相似。

语法

switch expression {
case value1:
    // code to be executed if expression == value1
case value2:
    // code to be executed if expression == value2
case value3, value4:
    // code to be executed if expression == value3 or expression == value4
default:
    // code to be executed if none of the cases are true
}

特点

  • 每个 case 后面跟的是一个或多个值,当 expression 的值等于这些值之一时,该 case 语句块会被执行。
  • 不需要使用 break 语句结束每个 case。在 Go 中,switch 语句默认只执行匹配的 case 语句块,然后退出 switch 结构。
  • 可以使用逗号分隔多个值,表示多个值中的任何一个都可以匹配。
  • default 语句是可选的,当没有 case 语句匹配时,会执行 default 语句块。

2. 条件式的 switch

这种形式的 switch 不基于特定的值,而是基于一组布尔条件。

语法

switch {
case condition1:
    // code to be executed if condition1 is true
case condition2:
    // code to be executed if condition2 is true
default:
    // code to be executed if none of the conditions are true
}

特点

  • 不需要主表达式,每个 case 后跟的是一个布尔条件。
  • 当布尔条件为 true 时,相应的 case 语句块会被执行。
  • 同样,不需要使用 break 语句。
  • 可以有一个 default 语句块,当没有 case 语句匹配时,会执行 default 语句块。

示例

num := 75
switch {
case num >= 50 && num < 100:
    fmt.Println("num is between 50 and 100")
case num < 50:
    fmt.Println("num is less than 50")
default:
    fmt.Println("num is 100 or greater")
}

总的来说,基于值的 switch 更适用于当你有一个表达式并且想基于它的不同值执行不同的代码块时。而条件式的 switch 更适用于当你有多个不相关的条件,并且想基于这些条件的真实性执行不同的代码块时。

Go 语言中的 switch 语句的匹配规则如下:

  1. 顺序匹配switch 会从上到下评估每个 case,并且只执行第一个匹配的 case 语句块。一旦找到匹配的 case,后续的 case 就不会再被评估。

  2. 不需要 break:与许多其他编程语言不同,Go 中的 switch 语句块在执行完匹配的 case 后不会“穿透”到下一个 case。这意味着不需要在每个 case 的末尾使用 break 语句。但如果你确实想“穿透”到下一个 case,可以使用 fallthrough 语句。

  3. 多值匹配:在一个 case 语句中,你可以列出多个值(使用逗号分隔),如果表达式的值匹配列表中的任何一个值,该 case 语句块都会被执行。

  4. 默认 casedefault 是一个特殊的 case,当没有其他 case 匹配时,它会被执行。default 语句块是可选的,并且在 switch 语句中最多只能有一个。

  5. 表达式是可选的:在条件式 switch 中,主 switch 表达式是可选的。在这种情况下,每个 case 后面都跟着一个布尔表达式,而不是值。switch 会评估这些布尔表达式并执行第一个为 truecase

  6. 初始化语句:与 if 语句类似,switch 语句可以包含一个可选的初始化语句,它在评估 switchcase 表达式之前执行。

    switch num := 50; {
    case num < 50:
       // some code
    case num >= 50:
       // some code
    }
    
  7. fallthrough 语句:如果你想在执行完当前的 case 语句块后,继续执行下一个 case 语句块,你可以使用 fallthrough 语句。但要注意,fallthrough 不会再次评估下一个 case 的条件,而是直接执行。

上述规则为你提供了使用 Go 语言 switch 语句的灵活性和控制能力,使其成为一个非常强大的控制结构。

标签:语句,case,code,default,switch,num,Go
From: https://www.cnblogs.com/tangjicheng/p/17632756.html

相关文章

  • Go语言中的continue语句
    在Go语言中,continue语句用于跳过当前循环的剩余部分并立即开始下一次迭代。它只对for循环有效。以下是如何在Go中使用continue语句的一些示例:1.基本用法在此示例中,当遇到偶数时,continue将跳过循环的剩余部分并进入下一次迭代。packagemainimport"fmt"funcmai......
  • Go语言中的break语句
    在Go语言中,break语句用于立即退出当前控制结构,如for循环、switch或select语句。以下是break语句的使用方法和示例:1.基本用法在此示例中,当遇到值3时,break将中断循环。packagemainimport"fmt"funcmain(){fori:=0;i<5;i++{ifi==3......
  • 深入探索Go语言的垃圾回收机制
    引言:在当今的计算机世界中,垃圾回收机制已成为许多编程语言的重要组成部分,它有效地解决了内存泄漏等问题,提高了程序的安全性和可靠性。Go语言作为一门高效且强大的编程语言,其独特的垃圾回收机制吸引了众多开发者的关注。本文将深入探讨Go语言中垃圾回收机制的原理、优点及实现方式。......
  • 初识Go(Golang)语言(2)
    初识Go(Golang)语言(2)Go开发工具的使用1.vscode使用直接下载vscode(免费软件),在内部下载golang语言插件,即可使用。2.JetBrains全家桶之(Goland[IDE]),永久免费"试用"。下方仅供参考,过期了就过期了。一般所有去哪佳通都可以使用。(个人推荐第二种) (1.)https://www.only4.work/blog/?id......
  • 高级有深度的英语句子
    高级有深度的句子(永远保持自我和自尊)所谓人生的归位,就是把外在东西变成你内心的力量。Lifeisadreamofalittlelessinconstant.人生是一场稍稍不那么无常的梦而已。Lifeisacontinuouscourseofdeathandrevival.生命是连续不断的死亡与复活。Ifl......
  • 简述C# 9.0增加的顶级语句--不使用 Main 方法的程序
    1.简述:    我们都知道,C#作为大型协作工业级编程语言,在编写简单应用的时候可能产生的入口代码比实际的需求代码还多的尴尬现象,这些入口代码在老袁的眼中显得非常碍眼。有没有像其它编程语言特别是脚本语言能快速编写简单可用的程序的可能呢?答案当然是有的,C#9.0增加了顶级......
  • 【数据库原理 | MySQL】一文打通 DDL语句
    ......
  • go语言编程常见问题
    在Goland中运行单元测试报错Error:Cannotfindpackage如下图,在Goland中运行单元测试时报错:“Error:Cannotfindpackage”弹出如下报错提示窗口:解决办法:在Goland设置界面中取消勾选“EnableGomodulesintegration”。参考:goland中运行go时报packagexxxisnotinGO......
  • 学习go语言编程之网络编程
    Socket编程Golang语言标准库对Socket编程进行了抽象,无论使用什么协议建立什么形式的连接,都只需要调用net.Dial()即可。Dial()函数Dial()函数的原型如下:funcDial(network,addressstring)(Conn,error)参数含义如下:network:网络协议名字,如:tcp,udp等Dial()函数支持的网络......
  • 学习go语言编程之工程管理
    Go命令行工具安装了Go语言的安装包后,就直接自带Go命令行工具。#查看当前安装的Golang版本goversion#查看go命令行工具的帮助信息gohelpGo命令行工具可以完成如下工作:代码格式化代码质量分析和修复单元测试与性能测试工程构建代码文档的提取和展示依赖包管理执......