到目前为止,我们已经看到 Go 程序开始在 main() 中执行,并按顺序执行该函数中的语句。但是,我们通常希望仅在满足条件时才执行某些语句,这意味着我们希望在代码中做出决定。为此,Go 提供了条件语句,例如 if、if-else 等。
1. Go 中的 if 语句
if 语句的第一个变体如下所示:
if condition {
// do something
}
if 测试条件语句。该语句可以是逻辑的或布尔的。如果语句的计算结果为真,则执行 {} 之间的语句体,如果为假,则忽略这些语句并执行 if } 之后的语句。
2. Go 中的 if-else 语句
if 语句的第二个变体如下所示:
if condition {
// do something
} else {
// do something else
}
在第二个变体中,附加了一个带有 { } 包围的语句体的 else,当条件为假时执行。这意味着我们有两个独占分支,并且只执行其中一个。
在第三个变体中,另一个 if 条件可以放在 else 之后,所以我们有 3 个独占分支。
3. Go 中的 if-else if-else 语句
if 语句的第三个变体如下所示:
if condition1 {
// do something
} else if condition2 {
// do something else
} else {
// default
}
else if 分支的数量原则上是没有限制的,但是出于可读性的原因,else if 的使用不应该被夸大。建议当您有多个 if-else 分支时,您应该尝试将最有可能为真的条件放在第一位,因为它会提高程序的执行速度。
还应该注意的是,即使主体中只有一个语句,{ } 大括号也是强制性的。左大括号必须与 if 关键字在同一行,else 子句必须与前一个 if 或 else if 关键字的右大括号在同一行。
考虑以下情况,这将使其清楚。
if x == 2 {
// do something
} else {
// do something else
}
上面的代码是完全有效的,因为两个大括号都与 if 和 else 关键字在同一行,而且 else 关键字就在 if 块的右大括号之后。
考虑下面显示的代码片段无效。
if x == 2 {
// do something
}
else {
// do something else
}
还应该注意的是,与其他著名的编程语言不同,您不需要在 if-else 语句的条件周围加上括号。让我们探索一个 if-else 语句的简单示例,您会注意到我们不会使用任何括号。
4. 示例: Go 中的 if-else
考虑下面显示的示例:
新建 if_else.go 文件添加如下代码
package main
import "fmt"
func main() {
var n int = 11
if n%2 == 0 {
fmt.Println("The number is even") //偶数
} else {
fmt.Println("The number is odd") //奇数
}
}
运行:
go run if_else.go
输出
The number is odd
5. 示例:Go 中的嵌套 If-ElseGo 中的 if 语句
我们在 if/else 构造中的 if 关键字之后传递的条件是 bool 条件,我们也可以传递 bool 值,而不是像上面示例中那样的表达式。
考虑下面显示的示例:
新建 if.go 文件添加如下代码
package main
import "fmt"
func main() {
if true {
fmt.Println("Will always print!")
}
}
运行:
go run if.go
输出:
Will always print!
6. 示例:Go 中的嵌套 If-Else
在 Go 中,if-else 语句出现在另一个 if-else 语句中是很常见的。
考虑下面显示的示例,该示例描述了我们在另一个 if 语句中包含一个 if 语句的情况。
新建 if_if_else.go 文件添加如下代码
package main
import "fmt"
func main() {
var count int
for count < 10 {
count++
if count > 5 || count < 10 {
if count == 6 {
fmt.Println("Count is 6")
break
} else if count == 8 {
fmt.Println("Count is 8")
continue
}
}
fmt.Println("The count is:", count)
}
fmt.Println("Loop ended")
}
在上面的例子中,我们在 if 语句中有一个 if-else 结构,它描述了嵌套 if-else 的情况。
运行:
go run if_else_if_else.go
输出:
The count is: 1
The count is: 2
The count is: 3
The count is: 4
The count is: 5
Count is 6
Loop ended

7. Go 中的 if-else 阶梯
If-else 梯形图是一种完全基于嵌套 if 的编程结构。它看起来像这样。
if condition 1 {
statement 1
} else if condition 2 {
statement 2
} else if condition 3 {
statement 3
}
.
.
.
上面示例中显示的条件表达式是从上到下计算的,一旦我们找到任何计算结果为 true 的条件,与之关联的语句将被执行,而梯子的其余部分将被绕过。如果我们没有遇到一个计算结果为 true 的语句,那么最后的 else 语句将被执行。在这个 if-else 阶梯中,最后的 else 语句通常充当默认语句。
8. 示例:Go 中的 If-else 阶梯
新建 if_else_if_else.go 文件添加如下代码
package main
import "fmt"
func main() {
var v1 int = 200
if v1 == 100 {
fmt.Printf("Value of v1 is 100\n")
} else if v1 == 200 {
fmt.Printf("Value of a is 20\n")
} else if v1 == 300 {
fmt.Printf("Value of a is 300\n")
} else {
fmt.Printf("None of the values is matching\n")
}
}
运行:
go run if_else_if_else.go
输出:
Value of a is 20
总结:在本教程中,我们了解了 if/else 语句是什么,如何在 Go 中编写它们,还了解了不必在条件中包含任何括号的情况,最后,我们看到了 if/ 的不同示例Go 中的 else 语句。