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 语句特点:

  1. if 后面的条件判断子句不需要用小括号括起来;

  2. 必须放在行尾,和 if 或者 else if 放在一行;

  3. if 后面可以带一个简单的初始化语句,并以分号分割,该简单语句声明的变量的作用域是整个 if 语句块,包括后面的 else ifelse 分支;

  4. 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 语句

  1. switchif 语句一样, switch 后面可以带一个可选的简单的初始化语句;

  2. switch 后面的表达式也是可选的,如果没有表达式, 则 case 子句是一个布尔表达式,而不是一个值,此时就相当于多重 if else 语句;

  3. switch 条件表达式的值不像 C/C++ 语言那样必须限制为整数常量, 表达式不需要为常量,甚至不需要为整数,可以是任意支持相等比较运算的类型变量;

  4. switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上至下逐一测试,直到匹配为止;

  5. switch 语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加 break

  6. switch 默认情况下 case 最后自带 break 语句,匹配成功后就不会执行其他 case,如果我们需要执行后面的 case,可以使用 fallthrough

  7. 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 可以是任何类型,而 value1value2 则可以是同类型的任意值。类型不被局限于常量或整数,但必须是相同的类型,或者最终结果为相同类型的表达式。

可以同时测试多个可能符合条件的值,使用逗号分割它们,例如: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)相关推荐

  1. java学习笔记之条件语句(if...else)

    条件语句用于基于不同的条件来执行不同的动作. 通常在写代码时,您总是需要为不同的决定来执行不同的动作.您可以在代码中使用条件语句来完成该任务. 在 JavaScript 中,我们可使用以下条件语句: ...

  2. Python学习笔记-Python 条件语句

    Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: Python程序语言指定任何非0和非空(null)值为tr ...

  3. python中if语句使用_Python学习笔记之if语句的使用示例

    前言 条件语句在实际开发中我们已经使用过几次了,在这里我们需要再次隆重的来介绍一下它,下面话不多说了,来一起看看详细的介绍吧. if语句 顾名思义,该语句为判断语句,先来一个简单的示例 cars=[' ...

  4. SQL学习笔记 | 02 SQL语句结构

    SQL学习笔记 | 02 SQL语句结构 一.表的导入 1.表的命名 2.导入步骤 3.导入需注意 二.标准SQL语法 1.语句结构 2.数据表的其他关键词 3.SQL语句的分类 一.表的导入 1.表 ...

  5. C++学习笔记3[条件判断语句]

    C++学习目录链接: C++学习笔记目录链接(持续更新中) 文章目录 一.条件判断语句 1.判断语句 二.使用条件运算符进行判断 三.switch语句 四.判断语句嵌套 总结 一.条件判断语句 1.判 ...

  6. C++学习笔记4[循环语句]

    C++学习目录链接: C++学习笔记目录链接(持续更新中) 文章目录 一.while循环 二.do...while循环 三.do...while循环与while循环区别 四.for循环 五.循环控制 ...

  7. [Python学习] 专题二.条件语句和循环语句的基础知识

            前面讲述了"专题一.函数的基础知识",而这篇文章讲述的Python的条件语句和循环语句的基础知识.主要内容包括:         1.条件语句:包括单分支.双分支和 ...

  8. 零基础学习 Python 之条件语句

    写在之前 我们写程序,就好比学生时代写作文一样,由 "字" 到 "词" 到 "句" 最后到 "文章" .此前我们学会了一 ...

  9. 学python的前提_Python语言学习前提:条件语句

    一.条件语句 1.条件语句:通过一条或多条语句的执行结果(True或False)来决定执行额代码块.python程序语言指定任何非0或非空(null)的值为true,0或null为false. 2. ...

  10. break后面的语句还执行吗_【自学C#】|| 笔记 5 条件语句if、switch

    一.条件语句 也就选择语句,判断语句. 有三种形式. 1. 单一条件的 if 语句 表现形式: if(布尔表达式)         {             语句块;         } 例: in ...

最新文章

  1. python爬虫正则表达式实例-Python 正则表达式爬虫使用案例解析
  2. How to scroll the window using JQuery $.scrollTo() function
  3. Visual C++——设置光标Cursor
  4. Python基础——PyCharm版本——第三章、数据类型和变量(超详细)
  5. oem模式是什么_OEM的完整形式是什么?
  6. 产品经理眼中的供应链、物流与采购管理
  7. 训练日志 2018.12.20
  8. pytest allure测试报告_用Pytest+Allure生成漂亮的HTML图形化测试报告
  9. python从指定文件夹导入模块_python – 从特定文件夹导入模块
  10. 解析Java内存区域
  11. UIScrollView可滚动内容大小歧义
  12. python使用缩进来体现-python使用缩进来体现代码之间的逻辑关系吗?
  13. [转载]c# winform 获取当前程序运行根目录
  14. 等保2.0三级安全要求
  15. linux目录名乱码,Linux下文件名乱码解决
  16. 设备树学习(二十三、aliases节点分析)
  17. python图片镜像翻转_python中镜像实现方法
  18. 利用MediaRecorder录制视频切片上传到ftp服务器
  19. 学习R语言编程——常用算法——导数与微积分的近似计算
  20. google earth engine (GEE)面向对象分类 代码

热门文章

  1. kotlin重写构造方法编译报错:Primary constructor call expected
  2. 2022-2028年中国数字化制造产业研究及前瞻分析报告
  3. 2022-2028年中国异戊二烯橡胶产业竞争现状及发展规模预测报告
  4. IDEA集成Docker插件实现一键自动打包部署微服务项目
  5. python打包成exe可执行文件指定进程名字
  6. tensorflow2.0 基础一 常用数据类型及转换
  7. NVIDIA DeepStream 5.0构建智能视频分析应用程序
  8. 嵌入式Linux设备驱动程序:用户空间中的设备驱动程序
  9. 女友问粉丝过万如何庆祝,我发万字长文《保姆级大数据入门篇》感恩粉丝们支持,学姐|学妹|学弟|小白看了就懂
  10. 【嵌入式】从STM32F103ZET6移植到STM32F103RCT6的流程