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
关键字。