当前位置: 首页 > news >正文

讲解Golang选择语句

Golang选择语句

  • 1. `if` 语句
    • 1.1 基本语法
    • 1.2 `if-else` 语句
    • 1.3 `if-else if-else` 语句
    • 1.4 简短声明和初始化
    • 1.5 多个条件的逻辑运算
  • 2. `switch` 语句
    • 2.1 基本语法
    • 2.2 示例
    • 2.3 `switch` 语句与 `if` 的对比
    • 2.4 不指定表达式
    • 2.5 `fallthrough` 语句
    • 2.6 `case` 支持多个值
  • 3. 总结

Go语言中的选择语句主要有两种:if语句和switch语句,它们用于根据条件执行不同的代码块。

1. if 语句

1.1 基本语法

if 语句根据条件表达式的布尔值来决定是否执行某段代码。条件表达式的结果必须是一个布尔值。

if condition {// 如果 condition 为 true,执行这里的代码
}

其中,condition 是一个布尔表达式,可以是任何返回布尔值的表达式。如果表达式结果为 true,就执行大括号 {} 内的代码块;如果结果为 false,则跳过该代码块。

1.2 if-else 语句

如果条件不成立,else 语句将执行。else 是可选的,可以不使用。

x := 7
if x > 10 {fmt.Println("x 大于 10")
} else {fmt.Println("x 小于或等于 10")
}

这里,x 小于等于 10,所以将输出:x 小于或等于 10

1.3 if-else if-else 语句

当有多个条件需要判断时,可以使用 else if 来处理多个条件。每个 else if 后面都跟一个条件表达式,多个 else ifelse 语句可以组合在一起进行多分支判断。

x := 15
if x > 20 {fmt.Println("x 大于 20")
} else if x == 15 {fmt.Println("x 等于 15")
} else {fmt.Println("x 小于 15")
}

输出是:x 等于 15,因为 x 等于 15。

1.4 简短声明和初始化

Go 语言的 if 语句支持在条件判断语句中声明和初始化变量。这通常用于减少作用域的范围,避免在函数的其他地方污染变量。

if x := 10; x > 5 {fmt.Println("x 大于 5")
}

在这个例子中,x 被声明并初始化为 10,然后判断 x > 5,因为条件为真,所以打印 x 大于 5。注意 x 的作用域只限于 if 语句块内部。

1.5 多个条件的逻辑运算

我们可以使用 &&(逻辑与)和 ||(逻辑或)在 if 条件中组合多个判断。

x := 7
y := 10
if x > 5 && y < 15 {fmt.Println("x 大于 5 且 y 小于 15")
}if x > 10 || y > 5 {fmt.Println("x 大于 10 或者 y 大于 5")
}

2. switch 语句

switch 语句用于根据不同的条件选择不同的执行路径。它比多个 if-else 语句更简洁,特别是当需要进行多重判断时。

2.1 基本语法

switch expression {
case value1:// 如果 expression == value1,执行此块代码
case value2:// 如果 expression == value2,执行此块代码
default:// 如果没有匹配的值,执行此块代码
}
  • expression 是要检查的表达式,可以是常量、变量、函数调用等。
  • case 后面是要与 expression 比较的值。只有 expression 的值与某个 case 的值相等时,才会执行该 case 对应的代码块。
  • default 是可选的,如果没有任何 case 匹配,执行 default 的代码。

2.2 示例

day := 3
switch day {
case 1:fmt.Println("星期一")
case 2:fmt.Println("星期二")
case 3:fmt.Println("星期三")
default:fmt.Println("未知的星期")
}

根据 day 的值选择执行不同的代码块。如果 day 为 3,输出 星期三

2.3 switch 语句与 if 的对比

switch 在多个条件判断时通常比多个 if-else 更清晰。例如,下面的 if-else 语句可以用 switch 改写得更简洁:

x := 10
if x == 1 {fmt.Println("x 等于 1")
} else if x == 2 {fmt.Println("x 等于 2")
} else if x == 3 {fmt.Println("x 等于 3")
} else {fmt.Println("x 不是 1、2 或 3")
}

可以用 switch 改写成:

switch x {
case 1:fmt.Println("x 等于 1")
case 2:fmt.Println("x 等于 2")
case 3:fmt.Println("x 等于 3")
default:fmt.Println("x 不是 1、2 或 3")
}

2.4 不指定表达式

如果 switch 后面不指定表达式,Go 会默认每个 casetrue 进行比较。这意味着所有的 case 都是布尔表达式。

x := 10
switch {
case x > 5:fmt.Println("x 大于 5")
case x == 10:fmt.Println("x 等于 10")
default:fmt.Println("x 小于 5")
}

这个例子相当于多个 if-else 语句,首先判断 x > 5 是否为真,然后判断 x == 10 是否为真。

2.5 fallthrough 语句

Go 的 switch 语句在匹配一个 case 后默认会终止,不会继续执行下面的 case。如果希望继续执行下一个 case,需要使用 fallthrough 语句。

switch day := 2; day {
case 1:fmt.Println("星期一")fallthrough
case 2:fmt.Println("星期二")fallthrough
case 3:fmt.Println("星期三")
}

在这个例子中,不管 day 是 1、2 还是 3,都会依次打印出所有的匹配项。注意,fallthrough 会强制跳过条件判断,继续执行下一个 case

2.6 case 支持多个值

Go 的 case 支持用逗号分隔多个值进行匹配,相当于多个条件判断。

x := 2
switch x {
case 1, 2, 3:fmt.Println("x 是 1、2 或 3")
default:fmt.Println("x 不是 1、2 或 3")
}

这里,case 1, 2, 3 等价于 case 1: case 2: case 3:,所以会输出 x 是 1、2 或 3

3. 总结

  • if 语句:适用于少数条件判断。通过简单的布尔判断或 else if 可以实现多重条件判断。
  • switch 语句:适用于多个条件判断,特别是当需要对多个常量或变量进行匹配时。switch 语句的可读性高,避免了多个 if-else 的繁琐和混乱。
  • fallthrough:允许在匹配到某个 case 后继续执行下一个 case,这是 Go 语言 switch 特有的特性。
  • switch 无表达式:可以像一系列 if-else 语句一样工作,不需要指定一个常量表达式。
http://www.lryc.cn/news/478452.html

相关文章:

  • 练习LabVIEW第四十一题
  • 应对AI与机器学习的安全与授权管理新挑战,CodeMeter不断创新引领保护方案
  • 【2024最新版Kotlin教程】Kotlin第一行代码系列第五课-类继承,抽象类,接口
  • 虚拟现实和增强现实技术,如何打造沉浸式体验?
  • ChatGPT任务设计和微调策略的优化
  • 通过 SSH 连接远程 Ubuntu 服务器
  • Perl 环境安装
  • 【NOIP提高组】引水入城
  • openvino python推理demo
  • JavaWeb项目-----博客系统
  • GY-56 (VL53L0X) 激光测距
  • 当今陪玩系统小程序趋势,陪玩系统源码搭建后的适用于哪些平台
  • qt QListWidget详解
  • java ssm 校园快递物流平台 校园快递管理系统 物流管理 源码 jsp
  • 西安电子科技大学考研网报审核通过了,然后呢?
  • pandas习题 051:将字符串数据读取到 DataFrame
  • 改进探路者算法复现
  • PostgreSQL 学习笔记:PostgreSQL 主从复制
  • 【系统架构设计师(第2版)】十一、未来信息综合技术
  • Pytorch学习--神经网络--优化器
  • w~自动驾驶合集11
  • 大数据新视界 -- 大数据大厂之 Impala 性能优化:解锁大数据分析的速度密码(上)(1/30)
  • GESP4级考试语法知识(算法概论(三))
  • x-cmd pkg | gum - 轻松构建美观实用的终端界面,解锁命令行新玩法
  • WMS系统打通仓储全链条数据势在必行,该如何做呢
  • 基于Python的校园爱心帮扶管理系统
  • 如何基于pdf2image实现pdf批量转换为图片
  • Tomcat(1) 什么是Tomcat?
  • 商务礼仪与职场沟通
  • C语言必做30道练习题