Golang if 关键字
最后修改于 2025 年 5 月 7 日
本教程将解释如何在 Go 中使用 if 关键字。我们将通过实际的决策示例来涵盖条件逻辑基础。
if 语句仅在指定的条件评估为 true 时执行一段代码。它是控制程序流程的基础。
在 Go 中,if 可以与可选的 else if 和 else 子句一起使用。它支持初始化语句,并且不需要在条件周围加括号。
基本 if 语句
if 的最简单形式检查单个条件。此示例演示了基本的条件执行。
package main
import "fmt"
func main() {
age := 20
if age >= 18 {
fmt.Println("You are an adult")
}
}
代码检查 age 是否大于或等于 18。仅当条件为 true 时才会打印消息。即使对于单个语句,也需要花括号。
If 语句带 else 子句
当条件为 false 时,else 子句提供备用执行。此示例显示了两种路径。
package main
import "fmt"
func main() {
temperature := 25.5
if temperature > 30 {
fmt.Println("It's hot outside")
} else {
fmt.Println("It's not too hot")
}
}
当温度超过 30 度时,将打印第一条消息。否则,将执行 else 块。在任何给定的执行中,只有一个分支会运行。
If 语句带 else if 链
可以使用 else if 检查多个条件。此示例演示了多路决策结构。
package main
import "fmt"
func main() {
score := 85
if score >= 90 {
fmt.Println("Grade: A")
} else if score >= 80 {
fmt.Println("Grade: B")
} else if score >= 70 {
fmt.Println("Grade: C")
} else {
fmt.Println("Grade: D or below")
}
}
条件从上到下进行评估。第一个为 true 的条件会执行其块,跳过其余的。else 子句处理所有剩余的情况。
If 语句带初始化语句
Go 允许在条件之前初始化变量。此示例展示了惯用的错误检查模式。
package main
import (
"fmt"
"os"
)
func main() {
if file, err := os.Open("data.txt"); err != nil {
fmt.Println("Error opening file:", err)
} else {
fmt.Println("File opened successfully")
file.Close()
}
}
初始化语句声明了 file 和 err。这些变量的作用域限定在 if-else 块内。此模式在 Go 中很常见。
嵌套 if 语句
If 语句可以嵌套以创建复杂的逻辑。此示例按顺序检查多个条件。
package main
import "fmt"
func main() {
age := 25
hasLicense := true
if age >= 16 {
if hasLicense {
fmt.Println("You can drive")
} else {
fmt.Println("You need a license")
}
} else {
fmt.Println("You're too young to drive")
}
}
外部 if 语句检查年龄,而内部 if 语句检查许可证状态。必须满足每个条件才能执行完整的路径。正确的缩进可以提高可读性。
条件中的逻辑运算符
条件可以使用逻辑运算符组合多个表达式。此示例演示了 AND 和 OR 操作。
package main
import "fmt"
func main() {
hour := 14
isWeekend := false
if hour >= 9 && hour <= 17 && !isWeekend {
fmt.Println("Work hours")
} else if hour < 7 || hour > 22 {
fmt.Println("Quiet hours")
} else {
fmt.Println("Regular hours")
}
}
&& 运算符要求所有条件都为 true。|| 运算符只需要一个 true 条件。括号可以澄清复杂的表达式。
短路求值
Go 从左到右评估逻辑表达式,并在可能的情况下提前停止。此示例显示了它如何影响程序流。
package main
import "fmt"
func isPositive(n int) bool {
fmt.Println("Checking positivity...")
return n > 0
}
func isEven(n int) bool {
fmt.Println("Checking evenness...")
return n%2 == 0
}
func main() {
num := 10
if isPositive(num) && isEven(num) {
fmt.Println("Number is positive and even")
}
num = -5
if isPositive(num) && isEven(num) {
fmt.Println("This won't print")
}
}
使用 && 时,如果第一个条件为 false,则不会评估第二个条件。使用 || 时,如果第一个条件为 true,则跳过第二个条件。这可以防止不必要的计算。
来源
本教程通过各种场景下的条件执行的实际示例,涵盖了 Go 中的 if 关键字。