Go 学习笔记(8)— 条件语句(if、if...else...、switch、fallthrough)
Go
语言提供了以下几种条件判断语句:
语句 | 描述 |
---|---|
if 语句 | if 语句 由一个布尔表达式后紧跟一个或多个语句组成 |
if…else 语句 | if 语句 后可以使用可选的 else 语句, else 语句中的表达式在布尔表达式为 false 时执行 |
if 嵌套语句 | 你可以在 if 或 else if 语句中嵌入一个或多个 if 或 else if 语句 |
switch 语句 | switch 语句用于基于不同条件执行不同动作 |
select 语句 | select 语句类似于 switch 语句,但是select会随机执行一个可运行的case。如果没有case可运行,它将阻塞,直到有case可运行 |
1. if 语句
Go
语言中 if
语句的语法如下:
if 布尔表达式 {/* 在布尔表达式为 true 时执行 */
}
示例:
package mainimport "fmt"func main() {/* 定义局部变量 */var a int = 10/* 使用 if 语句判断布尔表达式 */if a < 20 {/* 如果条件为 true 则执行以下语句 */fmt.Printf("a 小于 20\n" )}fmt.Printf("a 的值为 : %d\n", a)
}
if
语句特点:
if
后面的条件判断子句不需要用小括号括起来;{
必须放在行尾,和if
或者else if
放在一行;if
后面可以带一个简单的初始化语句,并以分号分割,该简单语句声明的变量的作用域是整个if
语句块,包括后面的else if
和else
分支;if
分支语句遇到return
后直接返回,遇到break
则跳过break
下方的if
语句块;
if
还有一种特殊的写法,可以在 if
表达式之前添加一个执行语句,再根据变量值进行判断,代码如下:
if x :=f(); x<y{ // 初始化语句中的声明变量xreturn x
} else if x > z { // x 在else if 里面一样可以被访问return z
} else {return y
}
f()
是一个带有返回值的函数, x := f()
是一个语句,执行 f() 后,将返回值保持在变量 x
中。 x<y
才是 if 的判断表达式,这种写法可以将返回值与判断放在一行进行处理,而且返回值的作用范围被限制在 if、else 语句组合中。
2. if…else… 语句
Go
语言中 if...else...
语句的语法如下:
if 布尔表达式 {/* 在布尔表达式为 true 时执行 */
} else {/* 在布尔表达式为 false 时执行 */
}
示例:
package mainimport "fmt"func main() {/* 局部变量定义 */var a int = 100;/* 判断布尔表达式 */if a < 20 {/* 如果条件为 true 则执行以下语句 */fmt.Printf("a 小于 20\n" );} else {/* 如果条件为 false 则执行以下语句 */fmt.Printf("a 不小于 20\n" );}fmt.Printf("a 的值为 : %d\n", a);}
3. if 语句嵌套
Go
语言中 if
嵌套语句的语法如下:
if 布尔表达式 1 {/* 在布尔表达式 1 为 true 时执行 */if 布尔表达式 2 {/* 在布尔表达式 2 为 true 时执行 */}
}
示例:
package mainimport "fmt"func main() {/* 定义局部变量 */var a int = 100var b int = 200/* 判断条件 */if a == 100 {/* if 条件语句为 true 执行 */if b == 200 {/* if 条件语句为 true 执行 */fmt.Printf("a 的值为 100 , b 的值为 200\n" );}}fmt.Printf("a 值为 : %d\n", a );fmt.Printf("b 值为 : %d\n", b );
}
4. switch 语句
switch
和if
语句一样,switch
后面可以带一个可选的简单的初始化语句;switch
后面的表达式也是可选的,如果没有表达式, 则case
子句是一个布尔表达式,而不是一个值,此时就相当于多重if else
语句;switch
条件表达式的值不像C/C++
语言那样必须限制为整数常量, 表达式不需要为常量,甚至不需要为整数,可以是任意支持相等比较运算的类型变量;switch
语句用于基于不同条件执行不同动作,每一个case
分支都是唯一的,从上至下逐一测试,直到匹配为止;switch
语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加break
;switch
默认情况下case
最后自带break
语句,匹配成功后就不会执行其他case
,如果我们需要执行后面的case
,可以使用fallthrough
;switch
支持default
语句, 当所有的case
分支都不符合时, 执行default
语句, 并且default
语句可以放到任意位置,并不影响switch
的判断逻辑;
Go
语言中 switch
语句的语法如下:
switch i:= "y", i { // switch 后面可以带上一个初始化语句case "y", "Y": // 多个 case 值使用逗号隔开Println("Yes")case "n", "N":Println("No")
}switch var1 {case value1:...case value2:...default:...
}
变量 var1
可以是任何类型,而 value1
和 value2
则可以是同类型的任意值。类型不被局限于常量或整数,但必须是相同的类型,或者最终结果为相同类型的表达式。
可以同时测试多个可能符合条件的值,使用逗号分割它们,例如:case val1, val2, val3
示例:
package mainimport "fmt"func main() {/* 定义局部变量 */var grade string = "B"var marks int = 90switch marks {case 90:grade = "A"case 80:grade = "B"case 50, 60, 70:grade = "C"default:grade = "D"}switch {// case 后不仅仅只是常量,还可以和 if 一样添加表达式// 注意,这种情况的 switch 后面不再需要跟判断变量。case grade == "A": fmt.Printf("优秀!\n")case grade == "B", grade == "C":fmt.Printf("良好\n")case grade == "D":fmt.Printf("及格\n")case grade == "F":fmt.Printf("不及格\n")default:fmt.Printf("差\n")}fmt.Printf("你的等级是 %s\n", grade)
}
输出结果:
优秀!
你的等级是 A
5. fallthrough
在 Go
语言中 case
是一个独立的代码块,执行完毕后不会像 C
语言那样紧接着执行下一个 case
,但是为了兼容一些移植代码,依然加入了 fallthrough
关键字来实现这一功能。
使用 fallthrough
会强制执行后面的 case
语句, fallthrough
不会判断下一条 case
的表达式结果是否为 true。代码如下:
package mainimport "fmt"func main() {switch {case false:fmt.Println("1、case 条件语句为 false")fallthroughcase true:fmt.Println("2、case 条件语句为 true")fallthroughcase false:fmt.Println("3、case 条件语句为 false")fallthroughcase true:fmt.Println("4、case 条件语句为 true")case false:fmt.Println("5、case 条件语句为 false")fallthroughdefault:fmt.Println("6、默认 case")}
}
输出结果:
2、case 条件语句为 true
3、case 条件语句为 false
4、case 条件语句为 true
Go 学习笔记(8)— 条件语句(if、if...else...、switch、fallthrough)相关推荐
- java学习笔记之条件语句(if...else)
条件语句用于基于不同的条件来执行不同的动作. 通常在写代码时,您总是需要为不同的决定来执行不同的动作.您可以在代码中使用条件语句来完成该任务. 在 JavaScript 中,我们可使用以下条件语句: ...
- Python学习笔记-Python 条件语句
Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: Python程序语言指定任何非0和非空(null)值为tr ...
- python中if语句使用_Python学习笔记之if语句的使用示例
前言 条件语句在实际开发中我们已经使用过几次了,在这里我们需要再次隆重的来介绍一下它,下面话不多说了,来一起看看详细的介绍吧. if语句 顾名思义,该语句为判断语句,先来一个简单的示例 cars=[' ...
- SQL学习笔记 | 02 SQL语句结构
SQL学习笔记 | 02 SQL语句结构 一.表的导入 1.表的命名 2.导入步骤 3.导入需注意 二.标准SQL语法 1.语句结构 2.数据表的其他关键词 3.SQL语句的分类 一.表的导入 1.表 ...
- C++学习笔记3[条件判断语句]
C++学习目录链接: C++学习笔记目录链接(持续更新中) 文章目录 一.条件判断语句 1.判断语句 二.使用条件运算符进行判断 三.switch语句 四.判断语句嵌套 总结 一.条件判断语句 1.判 ...
- C++学习笔记4[循环语句]
C++学习目录链接: C++学习笔记目录链接(持续更新中) 文章目录 一.while循环 二.do...while循环 三.do...while循环与while循环区别 四.for循环 五.循环控制 ...
- [Python学习] 专题二.条件语句和循环语句的基础知识
前面讲述了"专题一.函数的基础知识",而这篇文章讲述的Python的条件语句和循环语句的基础知识.主要内容包括: 1.条件语句:包括单分支.双分支和 ...
- 零基础学习 Python 之条件语句
写在之前 我们写程序,就好比学生时代写作文一样,由 "字" 到 "词" 到 "句" 最后到 "文章" .此前我们学会了一 ...
- 学python的前提_Python语言学习前提:条件语句
一.条件语句 1.条件语句:通过一条或多条语句的执行结果(True或False)来决定执行额代码块.python程序语言指定任何非0或非空(null)的值为true,0或null为false. 2. ...
- break后面的语句还执行吗_【自学C#】|| 笔记 5 条件语句if、switch
一.条件语句 也就选择语句,判断语句. 有三种形式. 1. 单一条件的 if 语句 表现形式: if(布尔表达式) { 语句块; } 例: in ...
最新文章
- python爬虫正则表达式实例-Python 正则表达式爬虫使用案例解析
- How to scroll the window using JQuery $.scrollTo() function
- Visual C++——设置光标Cursor
- Python基础——PyCharm版本——第三章、数据类型和变量(超详细)
- oem模式是什么_OEM的完整形式是什么?
- 产品经理眼中的供应链、物流与采购管理
- 训练日志 2018.12.20
- pytest allure测试报告_用Pytest+Allure生成漂亮的HTML图形化测试报告
- python从指定文件夹导入模块_python – 从特定文件夹导入模块
- 解析Java内存区域
- UIScrollView可滚动内容大小歧义
- python使用缩进来体现-python使用缩进来体现代码之间的逻辑关系吗?
- [转载]c# winform 获取当前程序运行根目录
- 等保2.0三级安全要求
- linux目录名乱码,Linux下文件名乱码解决
- 设备树学习(二十三、aliases节点分析)
- python图片镜像翻转_python中镜像实现方法
- 利用MediaRecorder录制视频切片上传到ftp服务器
- 学习R语言编程——常用算法——导数与微积分的近似计算
- google earth engine (GEE)面向对象分类 代码
热门文章
- kotlin重写构造方法编译报错:Primary constructor call expected
- 2022-2028年中国数字化制造产业研究及前瞻分析报告
- 2022-2028年中国异戊二烯橡胶产业竞争现状及发展规模预测报告
- IDEA集成Docker插件实现一键自动打包部署微服务项目
- python打包成exe可执行文件指定进程名字
- tensorflow2.0 基础一 常用数据类型及转换
- NVIDIA DeepStream 5.0构建智能视频分析应用程序
- 嵌入式Linux设备驱动程序:用户空间中的设备驱动程序
- 女友问粉丝过万如何庆祝,我发万字长文《保姆级大数据入门篇》感恩粉丝们支持,学姐|学妹|学弟|小白看了就懂
- 【嵌入式】从STM32F103ZET6移植到STM32F103RCT6的流程