if语句它允许程序根据一个或多个条件(通常是布尔表达式)的真假来决定执行哪一段代码。如果条件为真(true),则执行if
语句块内的代码;如果条件为假(false),则跳过该代码块,继续执行if
语句之后的代码(如果有else
或else if
部分,则根据条件判断是否执行这些部分)。
1. if
单路径(单选择)
|---|------------------------------|
| | if 条件 {
|
| | // 条件为真时执行的路径
|
| | fmt.Println("条件为真,执行此路径")
|
| | }
|
在这个例子中,只有当条件
为真时,才会执行大括号{}
内的代码块。
2. if..else
双路径(双选择)
|---|------------------------------|
| |
| | if 条件 {
|
| | // 条件为真时执行的路径
|
| | fmt.Println("条件为真,执行此路径")
|
| | } else {
|
| | // 条件为假时执行的路径
|
| | fmt.Println("条件为假,执行此路径")
|
| | }
|
这个结构提供了两种可能性:如果条件
为真,则执行第一个代码块;否则,执行else
后面的代码块。
3. if
多路径(多选择)
在Go中,通过else if
可以实现多路径(或多选择)的条件判断。
|---|---------------------------------|
| | if 条件1 {
|
| | // 条件1为真时执行的路径
|
| | fmt.Println("条件1为真,执行此路径")
|
| | } else if 条件2 {
|
| | // 条件1为假且条件2为真时执行的路径
|
| | fmt.Println("条件2为真,执行此路径")
|
| | } else {
|
| | // 所有条件都为假时执行的路径
|
| | fmt.Println("所有条件都为假,执行此路径")
|
| | }
|
这个结构允许你根据多个条件来判断应该执行哪个代码块。
4. if
嵌套路径(嵌套选择)
嵌套if
结构允许在一个if
或else if
块内部再放置一个或多个if
语句。
|---|--------------------------------------|
| | if 条件1 {
|
| | // 条件1为真时执行的路径
|
| | fmt.Println("条件1为真")
|
| | if 条件2 {
|
| | // 条件1和条件2都为真时执行的嵌套路径
|
| | fmt.Println("条件1和条件2都为真,执行此嵌套路径")
|
| | }
|
| | } else {
|
| | // 条件1为假时执行的路径
|
| | fmt.Println("条件1为假")
|
| | }
|
在这个例子中,if 条件2
是嵌套在if 条件1
内部的,只有当条件1
为真时,才会检查条件2
。如果条件2
也为真,则执行其对应的代码块。
案例:
1. 单路径(单选择)
|---|---------------------------------|
| | package main
|
| | import (
|
| | "fmt"
|
| | )
|
| | func main() {
|
| | score := 85
|
| | // 单路径(单选择)
|
| | if score >= 60 {
|
| | fmt.Println("恭喜你,及格了!")
|
| | }
|
| | // 注意:这里不会打印"没及格",因为没有else分支
|
| | }
|
2. 双路径(双选择)
|---|----------------------------|
| | package main
|
| | import (
|
| | "fmt"
|
| | )
|
| | func main() {
|
| | score := 55
|
| | // 双路径(双选择)
|
| | if score >= 60 {
|
| | fmt.Println("恭喜你,及格了!")
|
| | } else {
|
| | fmt.Println("很遗憾,没及格。")
|
| | }
|
| | }
|
3. 多路径(多选择)
|---|----------------------------|
| | package main
|
| | import (
|
| | "fmt"
|
| | )
|
| | func main() {
|
| | score := 78
|
| | // 多路径(多选择)
|
| | if score >= 90 {
|
| | fmt.Println("优秀!")
|
| | } else if score >= 80 {
|
| | fmt.Println("良好!")
|
| | } else if score >= 60 {
|
| | fmt.Println("及格!")
|
| | } else {
|
| | fmt.Println("不及格。")
|
| | }
|
| | }
|
4. 嵌套路径(嵌套选择)
|---|----------------------------------------------|
| | package main
|
| | import (
|
| | "fmt"
|
| | )
|
| | func main() {
|
| | score := 88
|
| | attendance := true // 假设这是出勤情况,true表示出勤良好
|
| | // 嵌套路径(嵌套选择)
|
| | if score >= 60 {
|
| | fmt.Println("及格了,接下来检查出勤情况:")
|
| | if attendance {
|
| | fmt.Println("出勤良好,有资格获得额外加分。")
|
| | } else {
|
| | fmt.Println("出勤不佳,请注意改善。")
|
| | }
|
| | } else {
|
| | fmt.Println("很遗憾,没及格。")
|
| | }
|
| | }
|