购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.1 条件判断语句

Go语言中的条件判断语句主要包括两种:第一种是if语句,第二种是switch语句。其中,应用最广泛的是if语句。下面分别介绍这两种语句的使用方法。

4.1.1 if语句

if语句是最基本、最常用的条件判断语句,通过判断条件表达式的值确定是否执行一段语句,或者选择执行哪部分语句。if语句分为简单if语句、if…else语句、if…else if…else语句和if嵌套语句几种形式。

1.简单if语句

简单if语句的语法格式如下。

参数说明如下。

表达式:用于指定条件表达式,可以使用逻辑运算符。

语句:当表达式的值为true时执行的语句。

简单if语句的执行流程如图4.1所示。

图4.1 简单if语句的执行流程

在简单if语句中,首先判断表达式的值,如果值是true,则执行相应的语句,否则不执行。

例如,根据比较两个变量的值,判断是否输出比较结果。代码如下。

运行结果如下。

    m大于n

【例4.1】 获取3个数中的最大值 (实例位置:资源包 \TM\sl\4\1

将3个数字56、76、96分别定义在变量中,应用简单if语句获取这3个数中的最大值。代码如下。

运行结果如下。

    56、76、96等3个数的最大值为96
2.if…else语句

在简单if语句的基础上增加一个可选的else语句,当表达式的值是false时,执行else语句中的内容。if…else语句的语法格式如下。

参数说明如下。

表达式:用于指定条件表达式,可以使用逻辑运算符。

语句1:当表达式的值为true时执行的语句。

语句2:当表达式的值为false时执行的语句。

if...else语句的执行流程如图4.2所示。

图4.2 if...else语句的执行流程

在if…else语句中,首先判断表达式的值,如果是true,则执行语句1中的内容,否则执行语句2中的内容。

例如,根据比较两个变量的值,输出比较的结果。代码如下。

运行结果为:

    m小于或等于n

【例4.2】 判断2023年2月的天数 (实例位置:资源包 \TM\sl\4\2

如果某一年是闰年,那么这一年的2月就有29天,否则这一年的2月只有28天。应用if…else语句判断2023年2月的天数。代码如下。

运行结果如下。

    2023年2月的天数为28天
3.if…else if…else语句

if语句是一种很灵活的语句,除了if...else的形式,还有if ... else if…else的形式。这种形式可以进行更多的条件判断,不同条件对应不同的语句。if...else if…else语句的语法格式如下。

if...else if…else语句的执行流程如图4.3所示。

图4.3 if...else if…else语句的执行流程

【例4.3】 判断空气质量状况 (实例位置:资源包 \TM\sl\4\3

空气污染指数(air pollution index,API)是评估空气质量状况的一组数字,空气质量状况的判断标准如下。

空气污染指数为0~100属于良好。

空气污染指数为101~200属于轻度污染。

空气污染指数为201~300属于中度污染。

空气污染指数大于300属于重度污染。

假设某城市今天的空气污染指数为76,判断该城市的空气质量状况。代码如下。

运行结果如下。

    空气质量状况:良好
4.if嵌套语句

if语句不但可以单独使用,还可以嵌套应用,即在if、else if或else语句中嵌套其他if语句。基本语法格式如下。

说明

在使用if语句进行条件判断时,应尽量避免使用过多的if嵌套语句,过多的if嵌套语句不但会使代码冗余,而且不利于程序的维护。

【例4.4】 判断年龄段 (实例位置:资源包 \TM\sl\4\4

使用if嵌套语句判断25岁处在哪个年龄段。已知年龄在18岁以下为未成年,年满18岁为成年,其中,年龄在0~6岁属于儿童,年龄在7~17岁属于少年,年龄在18~40岁属于青年,年龄在41~65岁属于中年,年龄在66岁以上属于老年。代码如下。

运行结果如下。

    25岁正处在青年时期

4.1.2 switch语句

switch是典型的多条件分支语句,与if...else if…else语句基本相同,但switch语句比if...else if…else语句更具有可读性,它可以根据一个变量的值选择不同的分支执行。switch语句允许在找不到匹配条件时执行一组默认语句。switch语句有3种使用形式,语法格式分别如下。

语法格式说明如下。

switch后面可以根据需要决定是否设置变量。

switch语句中可以有多个case语句,但只能有一个default语句。

case后面的值或表达式用来设置变量的匹配项或判断条件。case语句从上到下按顺序执行,如果匹配成功或条件成立,则执行对应的语句,执行后直接跳出整个switch语句。

switch关键字后设置了变量的执行流程如图4.4所示。

图4.4 switch关键字后设置了变量的执行流程

switch关键字后未设置变量的执行流程如图4.5所示。

图4.5 switch关键字后面未设置变量的执行流程

switch语句比较常见的应用是从多个case中找到和变量匹配的值,从而执行对应的语句。下面通过示例来了解一下switch语句几种不同形式的用法。

【例4.5】 输出贴心提醒警句 (实例位置:资源包 \TM\sl\4\5

将“今天是星期几”定义在变量中,根据“今天是星期几”输出不同的贴心提醒警句。代码如下。

运行结果如下。

    今天是周末, 可以好好放松一下了。

相对于其他一些语言来说,Go语言中的switch语句结构更加灵活,语法设计也是以方便为主。使用switch语句匹配变量的值,还可以将变量的赋值操作定义在switch关键字后面。在例4.5中,将变量的赋值放在switch关键字后面,将代码中的“switch weekday”修改为“switch weekday := "星期六";weekday”即可。

在设置变量的匹配项时,还可以在case后面设置多个值,多个值之间用逗号分隔。

【例4.6】 判断当前季节 (实例位置:资源包 \TM\sl\4\6

使用switch语句判断当前月份属于哪个季节,代码如下。

运行结果如下。

    现在是 9 月
    当前月份属于秋季

当switch关键字后未设置变量时,case后面必须是一个包含运算符的表达式,用于对已经声明的变量进行条件判断。

【例4.7】 输出考试成绩对应的等级 (实例位置:资源包 \TM\sl\4\7

将某学校的学生成绩转化为不同等级,划分标准如下。

“优秀”,大于或等于90分;

“良好”,大于或等于75分;

“及格”,大于或等于60分;

“不及格”,小于60分。

假设某学生的考试成绩是66分,输出该成绩对应的等级。代码如下。

运行结果如下。

    考试成绩等级:及格

在默认情况下,当程序执行某个case语句之后,不会再向下执行其他case语句,而是直接跳出整个switch语句。要想继续执行下一个case语句,可以在case语句中加入fallthrough关键字。示例代码如下。

运行结果如下。

    20
    30

从运行结果可以看出,switch从第一个匹配的case语句开始执行,如果case语句中设置了fallthrough,则程序会继续执行下一条case,而且不会判断下一个case后面的值是否匹配。 CanvA3uveu3OMv1fKuQhn+IVj8F00vFGS8Izt04PvLcrMrCi4YK9oCVHYzEhhWe6

点击中间区域
呼出菜单
上一章
目录
下一章
×