Golang switch 语句

简介

switch 语句提供了一种简洁的方式来执行多路分支选择

基本使用

  1. 基本语法如下:
switch expression {
case value1:// 当 expression 的值等于 value1 时执行
case value2:// 当 expression 的值等于 value2 
  1. switch 的每个分支自动提供了隐式的 break,意味着只有第一个匹配的 case 会被执行。不需要显式地在每个 case 后面加 break

  2. 如果你想要一个 case 执行后继续检查下一个 case,可以使用 fallthrough 语句:

switch x {
case 1:fmt.Println("x is 1")fallthrough
case 2:fmt.Println("x is 2")fallthrough
case 3:fmt.Println("x is 3")
default:fmt.Println("x is not 1, 2, or 3")
}

在上面的代码中,如果 x 是 1,它会打印出 “x is 1” 和 “x is 2”,因为 fallthrough 语句导致程序继续执行下一个 case

  1. switch 也支持不带表达式的用法,其中每个 case 可以包含一个条件表达式:
y := 20switch {
case y > 10:fmt.Println("y is greater than 10")
case y == 10:fmt.Println("y is exactly 10")
default:fmt.Println("y is less than 10")
}

在这种情况下,switch 语句类似于一系列的 if-else 语句,但其语法更加清晰

  1. switch 也可以包含初始化语句,类似于 if 语句:
switch z := computeValue(); {
case z > 10:fmt.Println("z is greater than 10")
case z == 10:fmt.Println("z is exactly 10")
default:fmt.Println("z is less than 10")
}

常见用法

  • 类型判断: switch 可以用来进行类型判断,在这种情况下,它会匹配一个接口变量的动态类型
var i interface{} = /* 一个值 */switch t := i.(type) {
case string:fmt.Println("i is a string:", t)
case int:fmt.Println("i is an int:", t)
default:fmt.Printf("Unknown type %T\n", t)
}

在这个例子中,i.(type) 用来发现接口变量 i 的动态类型
注意:i.(type) 用于 switch 语句中进行类型断言的类型判断。它只能在 switch 的类型判断分支中使用,不可以单独使用在其他地方

  • 多值匹配: 你可以在一个 case 语句中测试多个值。这可以简化代码,避免编写多个具有相同结果的 case 语句
switch x {
case 1, 2, 3:fmt.Println("x is 1, 2 or 3")
default:fmt.Println("x is not 1, 2, or 3")
}
  • 条件组合: case 语句中可以包含多个条件,这些条件可以是逻辑表达式
switch {
case x > 0 && x < 10:fmt.Println("x is between 1 and 9")
case x == 10 || x == 20:fmt.Println("x is either 10 or 20")
}
  • 无条件的 switch: 无条件的 switch 相当于一个更优雅的 if-else 链
switch {
case score >= 90:fmt.Println("Grade: A")
case score >= 80:fmt.Println("Grade: B")
case score >= 70:fmt.Println("Grade: C")
default:fmt.Println("Grade: F")
}
  • 退出循环: 在循环内部,switch 可以与 break 语句一起使用来退出循环
for {switch {case someCondition():fmt.Println("Condition met")break // 默认只会跳出 switchdefault:fmt.Println("Default case")}break // 退出 for 循环
}

请注意,在这种情况下,break 语句只会退出 switch,而不是循环。要退出循环,需要在外部再次使用 break 语句

  • 跳过当前迭代: 在循环中使用 switch,可以配合 continue 语句来跳过当前迭代
for x := 0; x < 5; x++ {switch {case x%2 == 0:// 跳过偶数continue}fmt.Println("Odd:", x)
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/600242.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

x-cmd pkg | pdfcpu - 强大的 PDF 处理工具

目录 简介首次用户多功能支持性能表现安全的加密处理进一步阅读 简介 pdfcpu 是一个用 Go 编写的 PDF 处理库。同时它也提供 API 和 CLI。pdfcpu 提供了丰富的 PDF 操作功能&#xff0c;用户还能自己编写配置文件&#xff0c;用来管理和使用各种自定义字体并存储有效的默认配置…

苹果紧急修复两大零日漏洞,影响iPhone、iPad 和 Mac 设备

内容概述&#xff1a; 近日&#xff0c;苹果公司发布紧急安全更新&#xff0c;此次更新修复了两个在攻击中被利用并影响 iPhone、iPad 和 Mac 设备的零日漏洞。据统计&#xff0c;自今年年初以来已修复的零日漏洞数量已达到 20 个。其中提到此次发现的零日漏洞很可能已被iOS 1…

uniapp 【专题详解 -- 时间】云数据库时间类型设计,时间生成、时间格式化渲染(uni-dateformat 组件的使用)

云数据表的时间类型设计 推荐使用时间戳 timestamp "createTime": {"bsonType": "timestamp","label": "创建时间&#xff1a;" }时间生成 获取当前时间 Date.now() .add({createTime: Date.now() })时间格式化渲染 下载安…

音量控制软件sound control mac功能亮点

sound control mac可以帮助用户控制某个独立应用程序的音量&#xff0c;通过每应用音量&#xff0c;均衡器&#xff0c;平衡和音频路由独立控制每个应用的音频&#xff0c;还有整个系统的音量。 sound control mac功能亮点 每个应用程序的音量控制 独立控制应用的数量。 键盘音…

发票信息提取v1.2.0

程序介绍 “发票信息提取”是一款用于提取电子发票的PDF、XML文件中的开票信息到excel表格的软件&#xff0c;无需联网及进行复杂配置&#xff0c;打开即用。目前支持增值税电子发票&#xff08;非数电票&#xff09;原始PDF文件&#xff0c;及数电票的XML文件。 更新内容 增加…

PHP运行环境之宝塔Web站点部署

目录 Web站点部署流程(部署聚合支付后台) 项目文件 将上传的文件解压文件至根目录 修改站点关键信息 设置伪静态,选择:thinkphp,并保存 设置PHP,选择:70+版本即可。 安装网站 1设置运行目录

RMAN-03002 RMAN-06059 ORA-19625

有个现场经理反馈&#xff0c;每天的rman备份异常&#xff0c;登录系统查看rman的log日志&#xff0c;报错信息如下 RMAN> run{ 2> backup filesperset 50 archivelog all format /backup/ARCHBAK_%d_%T_%s tag arch_bak delete all input; 3> } 4> Starting …

用于查询性能预测的计划结构深度神经网络模型--大数据计算基础大作业

用于查询性能预测的计划结构深度神经网络模型 论文阅读和复现 24.【X1.1】 在关系数据库查询优化领域&#xff0c;对查询时间的估计准确性直接决定了查询优化结果&#xff0c;进而影响到数据库整体的查询效率。但由于数据库自身的复杂性&#xff0c;查询时间受到数据分布、数据…

SwiftUI之深入解析如何使用accessibilityChartDescriptor视图修饰符为视图构建音频图表

一、DataPoint 结构体 在 SwiftUI 中构建一个简单的条形图视图开始&#xff0c;该视图使用垂直条形显示一组数据点。如下所示&#xff0c;有一个 DataPoint 结构&#xff0c;用于描述条形图视图中的条形&#xff0c;它具有 id、标签、数值和填充颜色&#xff1a; struct Data…

Flutter GetX 之 路由管理

路由管理是插件GetX常用功能之一&#xff0c;为什么说之一呢&#xff1f;因为GetX的功能远不止路由管理这么简单。 GetX的重要功能如下&#xff1a; 1、路由管理2、状态管理3、国际化4、主题5、GetUtil工具6、dialog 弹框7、snackbar 其实上面功能介绍的还是不够详细&#xff…

CentOS 7.8 安装 Docker

1.卸载旧版本 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine2.安装依赖 sudo yum -y install gcc sudo yum -y install gcc-c3.安装软件包 sudo yum inst…

Sentinel 使用

使用教程&#xff1a;Sentinel 使用教程

格密码基础:对偶格(超全面)

目录 一. 对偶格的格点 1.1 基本定义 1.2 对偶格的例子 1.3 对偶格的图形理解 二. 对偶格的格基 2.1 基本定义 2.2 对偶格的格基证明 三. 对偶格的行列式 3.1 满秩格 3.2 非满秩格 四. 重复对偶格 五. 对偶格的转移定理&#xff08;transference theorem&#xff…

2.0.0 BGP高级特性-ASFilter、CommunityFilter、ORF、对等组

Peer Group BGP对等体组 在网络中出现多台设备配置相近的情况下&#xff0c;使用对等体组可以极大的减少配置命令的输入。 与端口组类似&#xff0c;通过创建一个组&#xff0c;然后将成员添加入其中&#xff0c;可以对组中的成员进行统一的管理。 案例配置1 以AR2为例&…

透明OLED屏价格:影响因素与市场趋势

在当今的显示技术领域&#xff0c;透明OLED屏以其独特的透明特性和出色的显示效果&#xff0c;正逐渐成为市场的新宠。然而&#xff0c;对于许多消费者和企业来说&#xff0c;透明OLED屏的价格仍是关注的焦点。作为OLED透明屏市场部总监&#xff0c;我认为了解影响透明OLED屏价…

[足式机器人]Part2 Dr. CAN学习笔记-动态系统建模与分析 Ch02-6频率响应与滤波器

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-动态系统建模与分析 Ch02-6频率响应与滤波器 1st order system 一阶系统 低通滤波器——Loss Pass Filter

java: 从HBase中读取数据

一、添加依赖&#xff1a; <dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>2.6.0</version></dependency><dependency><groupId>org.apache.hbase</groupI…

借助文档控件Aspose.Words,使用 Java 在 Word 文档中创建表格

Microsoft Word 是一种流行的文字处理应用程序&#xff0c;用于创建各种类型的文档。这些文档可能包含多种类型的元素&#xff0c;包括文本、图像、表格和图表。当涉及到用 Java 自动创建和操作文档时&#xff0c;您可能需要一个轻松的解决方案来在 Word 文档中创建表格。因此&…

Ceph Large omap objects现象及原理分析

Large omap objects现象 以下是真实的问题场景&#xff0c;以此文进行记录并分享。 Q1&#xff1a;集群出现了Large omap objects告警&#xff0c;这是什么问题&#xff1f;有什么影响&#xff1f; Q2&#xff1a;Large omap objects告警的触发条件是什么&#xff1f; Q3&am…

系列十一、(三)Sentinel控制台

一、Sentinel控制台 二、实时监控 2.1、概述 实时监控&#xff0c;顾名思义是用来实时监控的&#xff0c;具体监控的是接口请求通过的QPS和拒绝的QPS&#xff0c;默认情况下没有访问记录&#xff0c;所以看不到任何记录&#xff0c;需要访问接口才会有记录。另外需要注意&…