当前位置: 首页 > news >正文

Go语言switch语句

Go语言中,switch,是一个高度灵活,其功能强大的控制结构,相比较Java中的switch,更受到语言重视。

目录

      • 1.基础用法
      • 2.多值匹配
      • 3.不指定表达式的 switch
      • 4.使用 fallthrough 强制进入下一个分支
      • 5.使用类型断言的 switch
      • 6.嵌套 switch
      • 7. switch 用于优化复杂条件
      • 总结


它不仅可以替代多层 if-else,还能在更复杂的逻辑中灵活应用。下面详细讲解 switch 的深度用法,并结合示例展示如何充分发挥其功能。

1.基础用法

switch 的基础语法用来匹配单个变量的值:

package mainimport "fmt"func main(){x:=2switch x{case 1:fmt.println("x 等于 1");case 2:fmt.println("x 等于 2");case 3:fmt.println("x 等于 3");}
}

2.多值匹配

每个case分支可以匹配多个值,使用逗号分隔。

package mainimport "fmt"func main(){day:="Tuesday"switch day{case "Mondey","Tuesday","Wednesday":fmt.Println("这是工作日")case "Saturday","Sunday":fmt.Println("这是周末")default:fmt.Println("无效的天数")}}

3.不指定表达式的 switch

Go中的switch可以省略表达式,直接用作条件分支判断,这类似于多层if-else

package mainimport "fmt"func main(){x:=1switch{case x > 0:fmt.Println("正数")case x < 0:fmt.Println("负数")default:fmt.Println("0")}
}

4.使用 fallthrough 强制进入下一个分支

默认情况下,swich在匹配到一个case后会退出。如果想继续执行下一个case,可以使用 fallthrough 关键字。

package mainimport "fmt"func main() {switch x := 1; x {case 1:fmt.Println("x 是 1")fallthroughcase 2:fmt.Println("这行会执行,因为 fallthrough")default:fmt.Println("默认分支")}
}
注意:fallthrough 不会重新检查条件,仅执行下一个分支。

5.使用类型断言的 switch

switch 可以配合类型断言使用,用来处理接口的不同类型

package mainimport "fmt"func main() {var i interface{} = 42 // i 可以是任意类型switch v := i.(type) {case int:fmt.Printf("i 是 int,值为 %d\n", v)case string:fmt.Printf("i 是 string,值为 %s\n", v)case bool:fmt.Printf("i 是 bool,值为 %t\n", v)default:fmt.Printf("未知类型: %T\n", v)}
}

6.嵌套 switch

switch 中嵌套另一个switch以实现更复杂的条件逻辑。

package mainimport "fmt"func main() {x := 10switch {case x > 0:fmt.Println("x 是正数")switch {case x%2 == 0:fmt.Println("x 是偶数")default:fmt.Println("x 是奇数")}case x < 0:fmt.Println("x 是负数")default:fmt.Println("x 是零")}
}

7. switch 用于优化复杂条件

当条件分支过多时,用 switch 可以避免冗长的 if-else 语句,提高代码可读性。

package mainimport "fmt"func main() {grade := 85switch {case grade >= 90:fmt.Println("优秀")case grade >= 75:fmt.Println("良好")case grade >= 60:fmt.Println("及格")default:fmt.Println("不及格")}
}

总结

通过灵活使用 switch,可以使代码更清晰、更易维护,是 Go 中不可或缺的控制结构之一。
  • 简单匹配:直接匹配变量值。
  • 多值匹配:每个 case 可以匹配多个值。
  • 条件判断:不指定表达式时,switch 等价于多层 if-else。
  • 类型判断:结合类型断言实现不同类型处理。
  • 灵活控制:使用 fallthrough 控制分支流转。

在结尾处,我就替大家回答一个疑惑。
Java 中 switch 不是不太支持使用吗?为什么在 Go 中却备受重视?

Go 的哲学:简单直接

  • Go语言倡导简单性与直接性,尽量避免复杂的继承和多态结构。
  • switch 被设计得功能很强大,适用于多种场景(值判断、逻辑分支、类型断言),因此在 Go 中更受重视。

Java 的哲学:面向对象优先

  • Java 是典型的面向对象语言,设计中更强调通过类和接口解决问题。
  • 对于复杂的条件判断,Java 倾向于使用多态或设计模式,switch 的使用场景相对有限。

希望大家收获,到此结束喽
( ̄︶ ̄)↗ 高抬贵手,一键三联。略略

相关文章:

Go语言switch语句

在Go语言中&#xff0c;switch&#xff0c;是一个高度灵活&#xff0c;其功能强大的控制结构&#xff0c;相比较Java中的switch&#xff0c;更受到语言重视。 目录 1.基础用法2.多值匹配3.不指定表达式的 switch4.使用 fallthrough 强制进入下一个分支5.使用类型断言的 switch…...

JavaScript DOM使用

DOM Document Object Model 简单而言&#xff0c;就是JavaScript将HTML文档的各个组成部分封装为对象。 封装的对象分别为&#xff1a; Document&#xff1a;整个HTML的文档对象 Element&#xff1a;元素对象&#xff08;也就是HTML中的标签&#xff09; Attribute&#xff1a;…...

人工智能|计算机视觉——微表情识别(Micro expression recognition)的研究现状

一、简述 微表情是一种特殊的面部表情,与普通的表情相比,微表情主要有以下特点: 持续时间短,通常只有1/25s~1/3s;动作强度低,难以察觉;在无意识状态下产生,通常难以掩饰或伪装;对微表情的分析通常需要在视频中,而普通表情在图像中就可以分析。由于微表情在无意识状态…...

耿恭坚守城池的方法

疏勒城之战中&#xff0c;耿恭坚守城池的方法主要有以下几点&#xff1a; 选择有利地势&#xff1a;耿恭深知疏勒城依山傍水、地势险要&#xff0c;易守难攻&#xff0c;于是果断放弃金满城&#xff0c;移师至疏勒城据守&#xff0c;为长期坚守创造了良好的地理条件.运用心理战…...

小兔鲜项目总结——项目亮点

目录 1、基于业务的逻辑组件拆分思想2、长页面吸顶交互的实现3、自定义图片懒加载指令并封装为插件4、画板插槽组件等业务通用组件封装5、通用逻辑函数的封装6、列表无限加载7、路由缓存问题的处理 小兔鲜项目其实在暑假之前就已经做完了&#xff0c;但是一直没有空做总结&…...

Cesium的ClearCommand的流程

ClearCommand是在每帧渲染前可以将显存的一些状态置为初始值&#xff0c;就如同把擦黑板。当然也包括在绘制过程中擦掉部分的数据&#xff0c;就如同画家在开始绘制的时候会画导览线&#xff08;如透视线&#xff09;&#xff0c;轮廓出来后这些导览线就会被擦除。 我画了一个…...

Fakelocation Server服务器/专业版 ubuntu

前言:需要Ubuntu系统 Fakelocation开源文件系统需求 Ubuntu | Fakelocation | 任务一 任务一 更新Ubuntu&#xff08;安装下载不再赘述&#xff09; sudo -i # 提权 sudo apt update # 更新软件包列表 sudo apt upgrade # 升级已安装的软…...

Spring AI Alibaba 快速入门

Spring AI Alibaba 实现了与阿里云通义模型的完整适配&#xff0c;接下来&#xff0c;我们将学习如何使用 spring ai alibaba 开发一个基于通义模型服务的智能聊天应用。 一、快速体验示例 注意&#xff1a;因为 Spring AI Alibaba 基于 Spring Boot 3.x 开发&#xff0c;因此…...

Docker Registry(镜像仓库)详解

Docker Registry&#xff08;镜像仓库&#xff09;详解 Docker Registry&#xff0c;即Docker镜像仓库&#xff0c;是Docker生态系统中一个至关重要的组件。它负责存储、管理和分发Docker镜像&#xff0c;为Docker容器提供镜像资源。本文将深入探讨Docker Registry的功能、结构…...

RTOS学习笔记---“二值信号量”和“互斥信号量”

在实时操作系统&#xff08;RTOS&#xff09;中&#xff0c;“二值信号量”和“互斥信号量”是两种常见的同步机制&#xff0c;用于线程之间的协调与资源管理。尽管它们有相似之处&#xff0c;都基于信号量概念&#xff0c;但它们的用途和行为存在重要区别。 1. 二值信号量&…...

Oracle-物化视图基本操作

-- 物化视图 -- 与普通视图的区别&#xff1a;真实存在数据的 普通视图的数据在基表 物化视图看成是, 一个定时运行的计算JOB一个存计算结果的表 创建时生成数据&#xff1a; 分为两种&#xff1a;build immediate 和 build deferred&#xff0c; build immediate是在创…...

(功能测试)测试报告

其中的统计分析和测试结果确认是必须要有的&#xff1b; 测试过程回顾&#xff1a;测试的时间和阶段&#xff0c;是否出现延期&#xff0c;与预期的任务计划是否匹配&#xff1b; &#xff01;统计分析&#xff1a;统计写多少用例&#xff0c;用例覆盖情况如何&#xff08;100%…...

【LeetCode每日一题】——746.使用最小花费爬楼梯

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时空频度】九【代码实现】十【提交结果】 一【题目类别】 数组 二【题目难度】 简单 三【题目编号】 746.使用最小花费爬楼梯 四【题目描述】 给你一…...

程序里sendStringParametersAsUnicode=true的配置导致sql server cpu使用率高问题处理

一 问题描述 近期生产环境几台sql server从库cpu使用率总是打满&#xff0c;发现抓的带变量值的慢sql&#xff0c;手动代入变量值执行并不慢&#xff0c;秒级返回&#xff0c;不知道问题出在哪里。 二 问题排查 用扩展事件或者sql profiler抓慢sql&#xff0c;抓到了变量值&…...

Vue3 el-table 默认选中 传入的数组

一、效果&#xff1a; 二、官网是VUE2 现更改为Vue3写法 <template><el-table:data"tableData"border striperow-key"id"ref"tableRef":cell-style"{ text-align: center }":header-cell-style"{background: #b7babd…...

最后一个单词的长度

题目详情&#xff1a; 解题思路&#xff1a; 用两个变量分别存储当前值和上次值&#xff0c;就可保证当前移动时记录字符个数&#xff0c;当遇到空格时&#xff0c;这次值保存到上次值&#xff0c;并清空。 代码解析&#xff1a; /* 最后一个单词的长度 */ #include <st…...

2024-11-19 kron积

若A[a11 a12; a21 a22]; B[b11 b12; b21 b22]; 则C[a11*b11 a12*b11 a21*b11 a22*b11; a11*b12 a12*b12 a21*b12 a22*b12; a11*b21 a12*b21 a21*b21 a22*b21; a11*b22 a12*b22 a21*b22 a22*b22] 用MATLAB实现 方法1&#xff1a; A [a11 a12; a21 a22]; B [b11 b12; b21 b22]…...

Redis ⽀持哪⼏种数据类型?适⽤场景,底层结构

目录 Redis 数据类型 一、String&#xff08;字符串&#xff09; 二、Hash&#xff08;哈希&#xff09; 三、List&#xff08;列表&#xff09; 四、Set&#xff08;集合&#xff09; 五、ZSet(sorted set&#xff1a;有序集合) 六、BitMap 七、HyperLogLog 八、GEO …...

树莓派2 安装raspberry os 并修改成固定ip

安装 安装raspberry os 没啥说的&#xff0c;到树莓派官网&#xff0c;下载制作启动映像盘的软件&#xff1a; https://www.raspberrypi.com/software/ 下载后&#xff0c;直接安装该软件&#xff0c;然后运行&#xff0c;选择好开发板的型号和操作系统型号&#xff0c;按照…...

11月第3周AI资讯

阅读时间:3-4min 更新时间:2024.9.9-2024.9.13 目录 DIAMOND:扩散模型在世界构建中的应用 阿里云推出Qwen2.5-Turbo:高效长文本处理,性价比卓越 微软:AI已实现几乎无限的记忆 Comfyui_Object_Migration一致性换衣模型 DeepSeek发布R1-Lite-Preview:推理AI竞争愈发…...

新手福音:在快马平台上手accelerate,轻松理解分布式训练基础

新手福音&#xff1a;在快马平台上手accelerate&#xff0c;轻松理解分布式训练基础 作为一个刚接触深度学习的新手&#xff0c;分布式训练听起来总是让人望而生畏。各种复杂的配置、环境搭建和代码修改&#xff0c;常常让人在入门阶段就打了退堂鼓。直到我发现了accelerate库…...

OpenClaw人人养虾:LiteLLM 统一网关

LiteLLM 是一个开源的 LLM API 统一网关&#xff08;Unified Gateway&#xff09;&#xff0c;支持 100 模型提供商&#xff0c;提供统一的 OpenAI 兼容 API 格式。 安装 LiteLLM pip 安装 pip install litellm[proxy] Docker 安装 docker run -p 4000:4000 \-e OPENAI_AP…...

Meshroom终极指南:零基础学会开源3D重建,从照片到模型的完整方案

Meshroom终极指南&#xff1a;零基础学会开源3D重建&#xff0c;从照片到模型的完整方案 【免费下载链接】Meshroom Node-based Visual Programming Toolbox 项目地址: https://gitcode.com/gh_mirrors/me/Meshroom 想要从普通照片创建专业级3D模型吗&#xff1f;Meshro…...

在 MyBatis 的映射元素 <resultMap> 中,<id> 和 <result> 都用于将查询结果集的列映射到 Java 对象的属性

在 MyBatis 的 <resultMap> 中&#xff0c;<id> 和 <result> 都用于将查询结果集的列映射到 Java 对象的属性&#xff0c;但它们的语义和内部处理机制有本质区别。下面从多个维度详细讲解。 1. <resultMap> 简介 <resultMap> 是 MyBatis 中最重…...

干农活总腰疼?农民朋友别再硬扛腰突

经常弯腰种地、扛重物、干农活&#xff0c;很多农民朋友常年腰疼&#xff0c;总觉得累点正常&#xff0c;咬牙硬扛。 殊不知慢慢发展成腰间盘突出&#xff0c;坐骨神经疼、腿麻无力&#xff0c;后期连农活都干不了。乱贴偏方、盲目正骨&#xff0c;还容易加重病情。我院 30 多年…...

实战应用:基于快马平台开发企业内网服务可用性监控系统

今天想和大家分享一个最近用InsCode(快马)平台快速实现的实用项目——企业内网服务可用性监控系统。这个需求来源于我们公司内部的实际痛点&#xff1a;随着服务器数量增加&#xff0c;经常出现某个服务端口异常但没人及时发现的情况。 1. 项目背景与需求分析 我们公司有几十…...

2025年短剧APP开发选型指南:uniApp混合开发 vs 安卓原生,哪个更适合你?

2025年短剧APP开发选型指南&#xff1a;uniApp混合开发 vs 安卓原生&#xff0c;哪个更适合你&#xff1f; 在短视频内容消费持续爆发的当下&#xff0c;微短剧作为一种新兴的内容形态正在迅速崛起。对于想要抓住这一风口的创业团队来说&#xff0c;技术选型往往成为第一个关键…...

Pixel Epic应用场景:律所尽调报告辅助生成+法律条文精准引用案例

Pixel Epic应用场景&#xff1a;律所尽调报告辅助生成法律条文精准引用案例 1. 法律行业的数字化挑战 法律尽职调查是并购交易、股权投资等商业活动中的关键环节。传统模式下&#xff0c;律师团队需要&#xff1a; 人工查阅数百页企业资料逐条核对法律法规手工编写数十页的尽…...

驱动管理工具:释放磁盘空间的开源解决方案

驱动管理工具&#xff1a;释放磁盘空间的开源解决方案 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 当你的系统频繁弹出磁盘空间不足警告&#xff0c;而C盘又找不到明显的大文件时&am…...

中国四大高考工厂是哪四所

根据当前&#xff08;2026年4月&#xff09;可查的权威公开资料&#xff0c;‌“中国四大高考工厂”通常指以下四所中学‌&#xff1a; ‌1、河北衡水中学‌ 2、安徽毛坦厂中学‌ 3、‌河南郸城一高‌&#xff08;即郸城县第一高级中学&#xff09; 4、湖北黄冈中学 ‌ 背…...