首页 > 后端开发 > Golang > 正文

如何在Golang中使用switch语句

P粉602998670
发布: 2025-10-31 08:58:02
原创
847人浏览过
Go的switch语句用于根据表达式值执行不同分支,比if-else更简洁。基本语法无需括号,匹配后自动终止;可省略表达式实现条件判断;支持多值case和fallthrough穿透;还可通过type断言判断接口类型,默认不穿透,需显式使用fallthrough。

如何在golang中使用switch语句

在Golang中,switch语句是一种控制结构,用于根据变量或表达式的值执行不同的代码分支。它比多个if-else语句更清晰、简洁,特别是在处理多种可能情况时。

基本switch语法

Go中的switch不需要括号,直接跟表达式即可。每个case后跟一个或多个值,用冒号结束。匹配成功后只执行对应分支,自动终止(无需break)。

示例:
var day int = 3
switch day {
case 1:
    fmt.Println("星期一")
case 2:
    fmt.Println("星期二")
case 3:
    fmt.Println("星期三")
default:
    fmt.Println("其他")
}
登录后复制

输出为:星期三

无表达式的switch(相当于if-else链)

switch后面可以不写表达式,此时case后应为布尔条件。这种方式常用于替代复杂的if-else逻辑。

立即学习go语言免费学习笔记(深入)”;

示例:
x := 15
switch {
case x < 0:
    fmt.Println("负数")
case x >= 0 && x < 10:
    fmt.Println("个位数")
case x >= 10:
    fmt.Println("两位数或更大")
}
登录后复制

输出:两位数或更大

多值case与fallthrough

一个case可以匹配多个值,用逗号分隔。如果希望继续执行下一个case,使用fallthrough关键字。

SpeakingPass-打造你的专属雅思口语语料
SpeakingPass-打造你的专属雅思口语语料

使用chatGPT帮你快速备考雅思口语,提升分数

SpeakingPass-打造你的专属雅思口语语料25
查看详情 SpeakingPass-打造你的专属雅思口语语料
示例:
grade := 'B'
switch grade {
case 'A', 'B', 'C':
    fmt.Println("及格")
case 'D':
    fmt.Println("需要补考")
fallthrough
default:
    fmt.Println("成绩无效或未通过")
}
登录后复制

当grade为'D'时,会输出两行:

  • 需要补考
  • 成绩无效或未通过

因为fallthrough强制进入default分支。

类型switch(判断接口类型)

switch还可用于判断interface{}的具体类型,常用于处理未知类型的参数。

示例:
var value interface{} = "hello"
switch v := value.(type) {
case string:
    fmt.Println("字符串:", v)
case int:
    fmt.Println("整数:", v)
case nil:
    fmt.Println("空值")
default:
    fmt.Println("未知类型")
}
登录后复制

输出:字符串: hello

基本上就这些。Go的switch灵活且安全,支持值匹配、条件判断、多值选择和类型断言,是流程控制中的实用工具。注意:默认不会穿透下一个case,如需穿透必须显式使用fallthrough。

以上就是如何在Golang中使用switch语句的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号