Go 中的 If-Else

Posted by

到目前为止,我们已经看到 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
if if if else if

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 语句。