Go 流程控制之 Switch 语句

GO语言基础教程(35)Go流程控制:Go语言流程控制解密:原来代码是这样“拐弯”的! Go语言的流程控制设计巧妙而实用,if语句支持短声明缩小变量作用域,switch自动break且支持无表达式灵活判断,for循环一统江湖实现各类循环需求。本文通过丰富示例,带你深入理解Go代码如何智能“拐弯”,写出更健壮的程序。 阅读详情

Switch 语句是编程语言中的一种流程控制语句,它可以根据不同的条件执行不同的代码块。在本文中,我们将介绍 Go 语言中的 Switch 语句的用法。

基本语法

Go 语言中的 Switch 语句的基本语法如下:

switch expression {
case value1:
    // code block 1
case value2:
    // code block 2
case value3:
    // code block 3
default:
    // code block 4
}

其中,expression 是一个可选的表达式,它的值会被与每个 case 子句中的值进行比较。如果 expression 的值与某个 case 子句中的值相等,则执行该 case 子句中的代码块。如果 expression 的值与所有 case 子句中的值都不相等,则执行 default 子句中的代码块。

示例

下面是一个简单的示例,演示了 Switch 语句的基本用法:

package main

import "fmt"

func main() {
    i := 2

    switch i {
    case 1:
        fmt.Println("One")
    case 2:
        fmt.Println("Two")
    case 3:
        fmt.Println("Three")
    default:
        fmt.Println("Other")
    }
}

在上面的示例中,我们定义了一个变量 i,并将其初始化为 2。然后,我们使用 Switch 语句根据 i 的值执行不同的代码块。由于 i 的值是 2,所以执行第二个 case 子句中的代码块,输出 “Two”。

多个表达式

Go 语言中的 Switch 语句还可以用于比较多个表达式的值。下面是一个示例:

package main

import "fmt"

func main() {
    i, j := 1, 2

    switch {
    case i == 1 && j == 1:
        fmt.Println("Both are one")
    case i == 1 && j == 2:
        fmt.Println("i is one, j is two")
    case i == 2 && j == 1:
        fmt.Println("i is two, j is one")
    default:
        fmt.Println("Other")
    }
}

在上面的示例中,我们定义了两个变量 i 和 j,并将它们分别初始化为 1 和 2。然后,我们使用 Switch 语句比较 i 和 j 的值,并执行不同的代码块。由于 i 的值是 1,j 的值是 2,所以执行第二个 case 子句中的代码块,输出 “i is one, j is two”。

Fallthrough 语句

在 Go 语言中,Switch 语句中的代码块执行完毕后,默认情况下会自动跳出 Switch 语句,不会继续执行下一个 case 子句中的代码块。但是,如果需要在一个 case 子句中执行完代码块后继续执行下一个 case 子句中的代码块,可以使用 fallthrough 语句。下面是一个示例:

package main

import "fmt"

func main() {
    i := 2

    switch i {
    case 1:
        fmt.Println("One")
        fallthrough
    case 2:
        fmt.Println("Two")
    case 3:
        fmt.Println("Three")
    default:
        fmt.Println("Other")
    }
}

在上面的示例中,我们使用 fallthrough 语句在第一个 case 子句中执行完代码块后继续执行第二个 case 子句中的代码块。由于 i 的值是 2,所以执行第二个 case 子句中的代码块,输出 “Two”。

总结

Switch 语句是一种强大的流程控制语句,它可以根据不同的条件执行不同的代码块。在 Go 语言中,Switch 语句的基本语法包括一个可选的表达式和多个 case 子句,以及一个可选的 default 子句。可以使用 Switch 语句比较多个表达式的值,并使用 fallthrough 语句在一个 case 子句中执行完代码块后继续执行下一个 case 子句中的代码块。

在实际编程中,Switch 语句可以用于处理多种情况,例如根据用户输入的命令执行不同的操作,或者根据一个变量的值执行不同的计算。使用 Switch 语句可以使代码更简洁、更易读,并且可以避免使用大量的 if-else 语句。同时,使用 fallthrough 语句可以使代码更加灵活,可以在需要时继续执行下一个 case 子句中的代码块。

总之,Switch 语句是 Go 语言中一个非常重要的流程控制语句,掌握它的用法可以帮助我们更好地编写高效、简洁、易读的代码。

【Go】Go语言中的流程控制语句 在编程中,流程控制是决定程序如何执行的关键部分。Go语言作为一种静态类型、编译型语言,其流程控制机制与其他高级语言类似,但也有一些独特之处。本文将详细探讨Go语言中的流程控制语句,包括顺序控制、条件控制(if、if-else、if-else if-else)、循环控制(for循环、for-range循环)、分支控制(switch语句)、以及跳转控制(goto、break、continue)。本文通过实际案例,我们将深入理解这些控制语句的使用方法和应用场景。 阅读详情

相关推荐

SOLIDWORKS Flow Simulation 颗粒分离器仿真:从流场分析到分离效率优化

计算流体力学(CFD)是研究流体流动、传热及相关物理现象的核心工具,其基本原理是通过数值方法求解控制流体运动的纳维-斯托克斯方程。在工程实践中,CFD的价值在于能够对复杂流动进行高保真度仿真,从而在产品设计阶段预测性能、优化结构,显著降低物理样机的试制成本和周期。颗粒分离器作为环保、化工、矿业等领域的关键设备,其设计核心在于平衡分离效率与压力损失。借助SOLIDWORKS内嵌的Flow Simulation模块,工程师可以高效地执行流体仿真,特别是对涉及离散相的颗粒运动进行轨迹追踪和效率统计。该技术方案通过

weixin_28709649的博客 325

Go中的switch的8种使用场景:没有你想的那么简单

在 Go 中灵活使用 switch,可以使代码更清晰、更易维护。 switch 是 Go 中不可或缺的控制结构之一

2302_80067378的博客 1815

深入MIPI DSI显示技术栈 (三) DSI vs CSI-2:孪生协议的本质差异

MIPI协议中的DSI与CSI-2存在本质差异:DSI为输出导向协议(Host→Display),用于屏幕控制和画面传输;CSI-2为输入导向协议(Sensor→Host),专攻图像采集。二者在包结构、同步机制、物理层优化等方面均有显著区别:DSI支持命令包和BLLP包,CSI-2具备嵌入式数据包;DSI时钟模式以Burst为主,CSI-2支持Continuous模式。典型场景中,二者协同工作(如手机相机预览),需注意时序同步和延迟控制。设计混合系统时,需合理规划虚拟通道和物理层资源,充分发挥这对&quot

GateWorld的博客 2106

8、GO语言入门-switch语句

【代码】8、GO语言入门-switch语句。

startqbb的博客 881

`tokenizer.decode` 出现乱码或异常输出,怎么处理

摘要: 在使用Hugging Face Transformers库时,tokenizer.decode出现乱码或异常输出的解决方案包括:1)确保模型与分词器严格匹配,加载时使用trust_remote_code=True;2)谨慎处理特殊token,先保留所有token再针对性清理;3)校验模型输出token的维度和数值是否合法;4)通过convert_tokens_to_string替代解码;5)检查生成配置如max_new_tokens等参数。核心思路是确保模型与分词器逻辑对齐、输出token合法,必要

ZhangJiqun&191cm&85kg 585

2025年前端框架全景解析:React、Vue、Angular的生态与未来之争

前端框架的竞争本质是工程哲学的分野:React的灵活、Vue的简洁、Angular的严谨,分别对应不同场景需求。

科技D人生 4844

GO语言语法---switch语句

Go语言的switch语句是一种多分支选择结构,比传统的if-else链更清晰。Go中的switch有一些独特的特性。

qq_58662768的博客 1174

上位机介绍:C# 开发者的必知基础

上位机是指在工业控制系统中,位于上层、负责人机交互和数据管理的计算机/软件,与“下位机”(PLC、传感器、变频器、单片机等硬件设备)相对应,核心是“向下通信控制设备,向上展示交互数据”。下位机:一线干活的“工人”(执行采集、控制指令);上位机:指挥管理的“办公室人员”(发指令、看数据、做报表)。C#开发者掌握上位机开发的核心是“通信+UI+稳定性基础层:搞懂WinForms/WPF基础、串口/Modbus通信,能实现核心功能;进阶层:掌握分层设计、异步编程、工业级容错(断线重连、数据校验);

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1559

Go语言Switch 语句

switch 是一个条件语句,它计算表达式并将其与可能匹配的列表进行比较,然后执行相应的代码块。它可以被认为是替换复杂if else子句的惯用方式。

qq497811258的博客 717

Amazon SES 移出沙盒完整指南 & 高通过率模板

AWS SES沙盒模式转正式模式申请指南 申请正式模式需通过AWS审核,常见被拒原因包括邮件用途不清晰、缺少退订机制或发送量不合理。人工申诉需登录AWS Support Center提交服务限额提升请求,填写详细的公司信息、邮件用途及合规措施。 高通过率申诉模板需包含: 公司信息:名称、网址及与AWS的合作情况。 邮件规范:明确类型(交易/营销)、退订链接及退信处理机制。 发送计划:合理预估发送量,确保合规。 关键点:真实信息、用途清晰、退订机制完善、发送量合理。首次被拒可修改后重新提交。

xianyinsuifeng的博客 329

知识图谱:综述

第一种理解:知识图谱本质上是语义网络。本体论是语义网络中最重要的一个要素。第二种理解:知识图谱也叫做多关系图,由多种类型的节点和多种类型的边组成。课程以第二种理解为主。

u013250861的博客 479

Go语言switch

一.switch结构介绍 switch也属于条件判断的语句 支持多种写法,和if … else if …else 结构的功能类似,但是里面的细节需要注意的地方更多 switch基本语法 switch [定义变量;] [变量]{ case [条件/具体值]: //代码 case [条件/具体值]: //代码 default: //代码 } switch每个case分支默认只执行一个且是从上向下执行 default上下位置没有影响,当且仅当所有case都不成立时才执行de

书香水墨 1180

学Simulink——线控转向(Steer‑By‑Wire, SBW)路感模拟与回正控制仿真

本文详细介绍了线控转向(SBW)系统的Simulink建模方法,重点讲解了路感模拟与回正控制的实现原理。文章首先分析了SBW系统结构,建立了方向盘和前轮的动力学方程;随后分步骤演示了Simulink建模过程,包括方向盘二阶动力学、前轮位置闭环控制、路感反馈计算等核心模块;最后通过仿真验证了转向跟随性能、路感反馈效果和自动回正功能。文中还提供了工程实现的关键参数和注意事项,为开发真实的SBW系统提供了实用指导。该模型可扩展应用于主动转向、故障注入等高级功能开发。

xiaoheshang_123的博客 39

go 流程控制之switch 语句介绍

到这里,我们看到 Go 的 switch 语句不仅修复了 C 语言 switch 的缺陷,还为 Go 开发人员提供了更大的灵活性,我们可以使用更多类型表达式作为 switch 表达式类型,也可以使用 case 表达式列表简化实现逻辑,还可以自行根据需要,确定是否使用 fallthrough 关键字继续向下执行下一个 case 的代码分支。在带有表达式列表的 case 语句中,Go 会从左到右,对列表中的表达式进行求值,比如示例中的 case2_1 函数就执行于 case2_2 函数之前。

淘小欣的博客 596

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

六:go流程控制语句(if,for,switch,goto)

16:控制语句流程     package main     import "fmt"     func main(){         //if         a := 1         if a > 0{             fmt.Print("a大于0")         }         if a > 0{             fmt.Print("a...

乐杨俊浅谈LAMP 716

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【Golang】:流程控制语句

Go语言提供了丰富的流程控制语句,包括分支控制(if/else、switch)、循环控制(for)和跳转控制(break/continue/goto/return)。if语句支持变量初始化,switch默认自动跳出且支持fallthrough。for循环支持标准形式、while风格和无限循环,同时提供range遍历数据结构。跳转控制中,break/continue支持标签跳转多层循环,goto可跳转到指定标签,return用于终止函数执行。这些特性使Go的流程控制既灵活又简洁。

元清的博客 485

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Go语言流程控制语句if、goto、for、switch

最近在看go语言,虽然网上大多数的评论都是在吐槽go语言,但是我喜欢简单的东西,我不拿它和任何语言去比,去用每一种语言完全是自己兴趣问题。 还没开始就跑题了 ~~!回到标题上来,golang的流程控制,刚开始学go,记性一直都不怎么好,做个笔记 流程控制包含三大类:条件判断、循环控制和无条件跳转。 if go语言的if package main import ( "f...

guhao022 349

GO语言----流程控制语句:for、if、else、switch 和 defer

流程控制语句1.for2.if3.switch4.defer 1.for Go 只有一种循环结构:for 循环。 基本的 for 循环由三部分组成,它们用分号隔开: 初始化语句:在第一次迭代前执行 条件表达式:在每次迭代前求值 后置语句:在每次迭代的结尾执行 初始化语句通常为一句短变量声明,该变量声明仅在 for 语句的作用域中可见。 一旦条件表达式的布尔值为 false,循环迭代就会终止。 注意:和 C、Java、JavaScript 之类的语言不同,Go 的 for 语句后面的三个构成部分外没有小括号

qwerty1372431588的博客 544

Go学习之路:流程控制语句:for、if、else、switch 和 defer(DAY 1)

【代码】Go学习之路:流程控制语句:for、if、else、switch 和 defer(DAY 1)

Love 6's Private Blog 1484

vb switch case语句_11. Go语言流程控制:switchcase 选择语句

点击上方“Go编程时光”,选择“加为星标”第一时间关注Go技术干货!系列导读01. 开发环境的搭建(Goland & VS Code)02. 学习五种变量创建的方法03. 详解数据类型:整形与浮点型04. 详解数据类型:byte、rune与string05. 详解数据类型:数组与切片06. 详解数据类型:字典与布尔类型07. 详解数据类型:指针08. 面向对象编程:结构体与继承0...

weixin_39708737的博客 1090

初识Go语言9-流程控制语句【if、switch、for、break与continue、goto与Label】

初识Go语言9-流程控制语句【if、switch、for、break与continue、goto与Label】

m0_52896752的博客 583

Go 流程控制语句(if else)(switch case default:)

1)if语句 例子: 2)switch 语句 1.基本例子: 2.case 后面可以有多个表达3.case 后面做范围判断 3.switch/case 后面的表达是可以是(常量值,变量,一个有返回值的方法或函数)等

gaokai310的博客 165

Go学习:Go语言中if、switch、for语句与其他编程语言中相应语句的格式区别

Go语言中的流程控制语句逻辑结构与其他编程语言类似,格式有些不同。Go语言的流程控制中,包括if、switch、for、range、goto等语句,没有while循环。

ckc_csdn的博客 1812

go之switch

switch 条件语句一 格式 switch initialization{ case v1: // do something case v2: // do something case v2: // do something default: // do something } 实例 package main impor...

weixin_34008784的博客 109

编程笔记 Golang基础 020 流程控制

流程控制在编程中扮演着至关重要的角色,它允许程序员根据特定条件、循环和逻辑结构来组织和控制程序的执行流程。

明月看潮生的博客 1175

GO之流程控制

for range 结构时Golang语言特有的一种迭代结果,在许多情况下都非常有用,for range 可以遍历数组、切片、字符串、map及通道。这三种基本逻辑是相互支撑的,他们构成了算法基本机构,无论怎样复杂的逻辑结构,都可以通过他们来表达。fmt.Printf("索引为: %d, 具体的值为:%c \n", i, value)索引为: 10, 具体的值为:d。索引为: 11, 具体的值为:!索引为: 15, 具体的值为:你。索引为: 18, 具体的值为:好。索引为: 21, 具体的值为:,

happy_king_zi的博客 1136
上一篇: Go 流程控制之 goto 语句
下一篇: Go 语言异常处理
GeeCode
博客等级 码龄3年 2粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值