Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >GO语言基础之条件语句switch

GO语言基础之条件语句switch

原创
作者头像
墨紫羽墨
修改于 2022-01-13 03:12:42
修改于 2022-01-13 03:12:42
42100
代码可运行
举报
文章被收录于专栏:FutureTesterFutureTester
运行总次数:0
代码可运行

switch 是一个条件语句,用于将表达式的值与可能匹配的选项列表进行比较,并根据匹配情况执行相应的代码块。它可以被认为是替代多个if else子句的常用方式。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
switch var1 {
    case val1:
        ...
    case val2:
        ...
    default:
        ...
}

变量 var1 可以是任何类型,而 val1 和 val2 则可以是同类型的任意值。类型不被局限于常量或整数,但必须是相同的类型;或者最终结果为相同类型的表达式。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

func test1() {
	// 常规switch语句
	a := 1
	switch a {
	case 1:
		fmt.Println("test1 a = 1")
	case 2:
		fmt.Println("test1 a = 2")
	case 3:
		fmt.Println("test1 a = 3")
	}
}

switch 语句中,表达式是可选的,可以被省略。如果省略表达式,则表示这个 switch 语句等同于switch true,并且每个case表达式都被认定为有效,相应的代码块也会被执行。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
func test4() {
	// switch后面不接条件,条件放在case里面
	a := 1
	switch {
	case a == 1:
		fmt.Println("test4 a = 1")
	case a == 2:
		fmt.Println("test4 a = 2")
	case a == 3:
		fmt.Println("test4 a = 3")
	default:
		fmt.Println("test4 a不符合要求")
	}
}

Go 中,每执行完一个 case 后,会从 switch 语句中跳出来,不再做后续 case 的判断和执行。使用fallthrough语句可以在已经执行完成的 case 之后,把控制权转移到下一个 case 的执行代码中。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
func test5() {
	// fallthrough
	a := 2
	switch {
	case a == 1:
		fmt.Println("test5 a = 1")
	case a == 2:
		fmt.Println("test5 a = 2")
		fallthrough
	case a == 3:
		fmt.Println("test5 a = 3")
	default:
		fmt.Println("test5 a不符合要求")
	}
}

三、完整例子

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package main

import "fmt"

func test1() {
	// 常规switch语句
	a := 1
	switch a {
	case 1:
		fmt.Println("test1 a = 1")
	case 2:
		fmt.Println("test1 a = 2")
	case 3:
		fmt.Println("test1 a = 3")
	}
}

func test2() {
	// switch赋值和判断都放switch里面
	switch a := 1; a {
	case 1:
		fmt.Println("test2 a = 1")
	case 2:
		fmt.Println("test2 a = 2")
	case 3:
		fmt.Println("test2 a = 3")
	}
}

func test3() {
	// 一个case里面包含两个结果
	switch a := 5; a {
	case 1:
		fmt.Println("test3 a = 1")
	case 2:
		fmt.Println("test3 a = 2")
	case 3, 4:
		fmt.Println("test3 a = 3或4")
	default:
		fmt.Println("test3 a不符合要求")
	}
}

func test4() {
	// switch后面不接条件,条件放在case里面
	a := 1
	switch {
	case a == 1:
		fmt.Println("test4 a = 1")
	case a == 2:
		fmt.Println("test4 a = 2")
	case a == 3:
		fmt.Println("test4 a = 3")
	default:
		fmt.Println("test4 a不符合要求")
	}
}

func test5() {
	// fallthrough
	a := 2
	switch {
	case a == 1:
		fmt.Println("test5 a = 1")
	case a == 2:
		fmt.Println("test5 a = 2")
		fallthrough
	case a == 3:
		fmt.Println("test5 a = 3")
	default:
		fmt.Println("test5 a不符合要求")
	}
}

func main() {
	test1()
	test2()
	test3()
	test4()
	test5()
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Go语言学习系列——条件语句:if-else、switch——【坚果派-红目香薰】
if-else: 1. 条件表达式不需要括号 2. 大括号必须有,且必须在同一行 3. 支持初始化语句 4. 条件必须是布尔值 switch: 1. 不需要break语句 2. 支持多条件匹配 3. 支持无条件表达式的形式 4. fallthrough关键字用于继续执行下一个case 5. case后可以是表达式 6. default可选,位置灵活
红目香薰
2025/03/13
960
Go语言学习系列——条件语句:if-else、switch——【坚果派-红目香薰】
Go 语句
if...else 语句 | if 语句 后可以使用可选的 else 语句, else 语句中的表达式在布尔表达式为 false 时执行。 |
acc8226
2022/05/17
3900
go 流程控制之switch 语句介绍
我们先通过一个例子来直观地感受一下 switch 语句的优点。在一些执行分支较多的场景下,使用 switch 分支控制语句可以让代码更简洁,可读性更好。
贾维斯Echo
2023/10/18
3410
go语言慢速入门——流程控制语句
go的流程控制语句很有特色。if-else,for,switch-case。注意go没有while和do-while语句。除此之外go还有和特定类型绑定的流程控制模块。例如,用于容器类型的for-range循环。 go支持break,continue以及goto语句,另外go还支持特有的fallthrough语句。
zy010101
2022/07/28
4310
11.Go语言-流程控制
所谓流程控制就是指“程序怎么执行”或者说“程序执行的顺序”。程序整体上确实是从上往下执行,但又不单纯是从上往下。
面向加薪学习
2022/09/04
5540
第18节 switch语句
switch是一个条件语句,它计算表达式并将其与可能匹配的列表进行比较,并根据匹配执行代码块。它可以被认为是一种惯用的方式来写多个if else子句。
小尘哥
2019/07/19
6220
Golang语言社区--Go语言基础第五节流程控制
大家好,我是Golang语言社区(www.Golang.LTD)主编彬哥,今天给大家带来的是关于go语言中的流程控制。
李海彬
2018/03/08
7920
Golang语言社区--Go语言基础第五节流程控制
Go语言中的控制结构:条件语句和循环
在编程中,控制结构是指引导程序如何执行的一系列指令。Go语言提供了多种控制结构来处理条件判断和循环操作。本文将详细介绍Go语言中的条件语句和循环结构,通过实例和代码解释,帮助读者全面理解和应用这些基本构造。
数字扫地僧
2024/06/12
1520
【愚公系列】2022年7月 Go教学课程 018-分支结构之switch
Switch在一些计算机语言中是保留字,其作用大多情况下是进行判断选择。以Go语言来说,switch(开关语句)常和case default一起使用。
愚公搬代码
2022/08/01
4640
【愚公系列】2022年7月 Go教学课程 018-分支结构之switch
Go 语言基础入门教程 —— 流程控制篇:分支语句
分支语句会根据传入条件的不同,选择不同的分支代码执行。Go 语言的分支语句和 PHP 类似,只是不需要在每个分支结构中显式通过 break 语句退出:
学院君
2019/08/08
5500
100天精通Golang(基础入门篇)——第8天:Go语言程序的流程结构和条件语句
本文是《100天精通Golang(基础入门篇)》系列的第8天,介绍了Golang中程序的流程结构和条件语句。通过学习程序的流程结构,包括顺序结构、分支结构和循环结构,以及条件语句如if语句和switch语句,读者可以进一步掌握Golang的基础知识和语法。
猫头虎
2024/04/08
1590
100天精通Golang(基础入门篇)——第8天:Go语言程序的流程结构和条件语句
Go语言入门:分支结构
注意:其他很多编程语言是要求if后的条件判断表达式要用()括号括起来,但Go语言不需要!
阿珍
2025/02/06
670
Go语言入门:分支结构
Go语言条件语句
Go语言的条件语句在概念和流程上与其他编程语言完全相同,因此这里不再赘述,写法上结合了Python和C++,即条件表达式不需要加括号,但仍然保留了花括号。具体例子见下:
Steve Wang
2020/12/22
5870
三分钟学 Go 语言——条件语句+switch和type switch
switch 好理解,是一个替代if else else else接口而提出的,如下,switch 后跟变量,case 后跟常量,只要变量值和常量匹配,就执行该分支下的语句。
机智的程序员小熊
2020/04/21
5720
三分钟学 Go 语言——条件语句+switch和type switch
GO语言基础之条件语句if
如果condition为true时,执行上面{ 代码 } 之间的代码,如果为false时,执行else里面的代码
墨紫羽墨
2022/01/12
6960
Go通关03:控制结构,if、for、switch逻辑语句
您诸位好啊,我是无尘,今天学习下go语言的控制结构: if 条件语句 func main() { i:=6 if i >10 { fmt.Println("i>10") } else if i>5 && i<=10 { fmt.Println("5<i<=10") } else { fmt.Println("i<=5") } } 注意: if 后的表达无 ‘( )’ 每个条件分支中的 ‘{ }’ 是必须的。哪怕只
微客鸟窝
2021/08/18
3720
【Go语言刷题篇】Go从0到入门5:Map综合复习、条件语句、循环语句练习
问题描述:给定两个字符串des 和src ,判断 des能不能由 src 里面的字符构成,//如果可以,返回 true ;否则返回 false,src中的每个字符只能在 des 中使用一次。
程序员洲洲
2024/06/07
1340
【Go语言刷题篇】Go从0到入门5:Map综合复习、条件语句、循环语句练习
Go 语言学习之流程控制
在 Go 语言中,if...else... 语句的条件表达式必须是布尔类型,可以省略小括号,并且左大括号不能另起一行。通过代码,我们演示 if...else... 的标准使用方法。
frank.
2020/07/28
2690
Go 编程 | 连载 09 - 条件和循环表达式
需要注意的是 Go 中 if 控制语句的 { 不可以换行,必须要跟 if 关键字在同一行,否则会报错。
RiemannHypothesis
2022/09/26
2350
Go 编程 | 连载 09 - 条件和循环表达式
go语言基础3-控制语句
if 实例 func method(v int) int { if v >100 { return 100 }else if v < 0 { return 0 }else { return v } } //读取文件 func readFile(){ const filename = "branch/abc.txt" if constens, err := ioutil.ReadFile(filename); err
吐吐吐吐吐葡萄皮
2019/04/04
3660
go语言基础3-控制语句
相关推荐
Go语言学习系列——条件语句:if-else、switch——【坚果派-红目香薰】
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验