番禺区大石做网站佛山抖音seo
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 if 和 else 语句可以组合在一起进行多分支判断。
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 会默认每个 case 与 true 进行比较。这意味着所有的 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语句一样工作,不需要指定一个常量表达式。
