介绍
条件语句是每种编程语言的一部分。使用条件语句,我们可以让代码有时运行,有时不运行,具体取决于当时程序的条件。
当我们完全执行程序的每条语句时,我们并不是要求程序评估特定条件。通过使用条件语句,程序可以确定是否满足某些条件,然后被告知下一步该做什么。
让我们看一些使用条件语句的例子:
- 如果学生的考试成绩超过 65%,则报告她的成绩通过;如果不是,请报告她的成绩不及格。
- 如果他的账户里有钱,计算利息;如果他不这样做,则收取罚款。
- 如果他们买了 10 个或更多的橙子,则计算 5% 的折扣;如果他们买的少,那就不要。
通过评估条件并根据是否满足这些条件来分配要运行的代码,我们正在编写条件代码。
本教程将带您完成使用 Go 编程语言编写条件语句。
如果语句
我们将从 if 语句开始,它将评估语句是真还是假,并且仅在语句为真的情况下运行代码。
在纯文本编辑器中,打开一个文件并编写以下代码:
package main import "fmt" func main() { grade := 70 if grade >= 65 { fmt.Println("Passing grade") } }
使用这段代码,我们有变量grade,并给它一个整数值70。然后我们使用if语句来评估变量grade是否大于或等于(>=)到65。如果它满足 在这种情况下,我们告诉程序打印出字符串 Passing Grade。
将程序另存为grade.go,并从终端窗口使用命令go rungrade.go在本地编程环境中运行它。
在这种情况下,70的成绩确实满足大于或等于65的条件,所以运行程序会得到如下输出:
Output Passing grade
现在让我们通过将等级变量的值更改为 60 来更改该程序的结果:
package main import "fmt" func main() { grade := 60 if grade >= 65 { fmt.Println("Passing grade") } }
当我们保存并运行这段代码时,我们将不会收到任何输出,因为条件不满足并且我们没有告诉程序执行另一条语句。
再举一个例子,让我们计算一个银行账户余额是否低于 0。让我们创建一个名为 account.go 的文件并编写以下程序:
package main import "fmt" func main() { balance := -5 if balance < 0 { fmt.Println("Balance is below 0, add funds now or you will be charged a penalty.") } }
当我们使用 go run account.go 运行程序时,我们将收到以下输出:
Output Balance is below 0, add funds now or you will be charged a penalty.
在程序中我们初始化变量 balance 的值为 -5,小于 0。由于 balance 满足 if 语句的条件(balance < 0),一旦我们保存并运行代码,我们就会收到字符串 输出。 同样,如果我们将余额更改为 0 或正数,我们将不会收到任何输出。
Else 语句
即使 if 语句的计算结果为 false,我们也可能希望程序执行某些操作。 在我们的成绩示例中,我们需要输出成绩是通过还是失败。
为此,我们将在上面的成绩条件中添加一个 else 语句,其结构如下:
package main import "fmt" func main() { grade := 60 if grade >= 65 { fmt.Println("Passing grade") } else { fmt.Println("Failing grade") } }
由于grade变量的值为60,if语句的计算结果为false,所以程序不会打印出Passing Grade。 后面的 else 语句告诉程序无论如何都要做某事。
当我们保存并运行程序时,我们将收到以下输出:
Output Failing grade
如果我们随后重写程序以将等级值设为 65 或更高,我们将收到输出的 Passing 等级。
要在银行账户示例中添加 else 语句,我们将代码重写如下:
package main import "fmt" func main() { balance := 522 if balance < 0 { fmt.Println("Balance is below 0, add funds now or you will be charged a penalty.") } else { fmt.Println("Your balance is 0 or above.") } } Output Your balance is 0 or above.
在这里,我们将 balance 变量值更改为正数,以便打印 else 语句。要打印第一个 if 语句,我们可以将值重写为负数。
通过将 if 语句与 else 语句结合起来,您构建了一个由两部分组成的条件语句,它将告诉计算机执行某些代码,无论 if 条件是否满足。
Else if 语句
到目前为止,我们已经为条件语句提供了一个布尔选项,每个 if 语句评估为真或假。在许多情况下,我们需要一个评估两个以上可能结果的程序。为此,我们将使用一个 else if 语句,它是用 Go 编写的 as else if。 else if 或 else if 语句看起来像 if 语句,并将评估另一个条件。
在银行账户程序中,我们可能希望为三种不同的情况提供三个离散输出:
- 余额低于0
- 余额等于0
- 余额大于0
else if 语句将放置在 if 语句和 else 语句之间,如下所示:
package main import "fmt" func main() { balance := 522 if balance < 0 { fmt.Println("Balance is below 0, add funds now or you will be charged a penalty.") } else if balance == 0 { fmt.Println("Balance is equal to 0, add funds soon.") } else { fmt.Println("Your balance is 0 or above.") } }
现在,一旦我们运行程序,就会出现三种可能的输出:
- 如果变量 balance 等于 0,我们将收到 else if 语句的输出(Balance 等于 0,尽快添加资金。)
- 如果变量 balance 设置为正数,我们将收到 else 语句的输出(Your balance is 0 or above.)。
- 如果变量 balance 设置为负数,输出将是 if 语句中的字符串(Balance 低于 0,请立即添加资金,否则将收取罚款)。
但是,如果我们想要拥有三种以上的可能性怎么办?我们可以通过在代码中编写多个 else if 语句来做到这一点。
在grade.go程序中,让我们重写代码,使得有几个字母等级对应于数字等级的范围:
- 90或以上相当于A级
- 80-89相当于B级
- 70-79相当于C级
- 65-69相当于D级
- 64或以下相当于F级
要运行此代码,我们将需要一个 if 语句、三个 else if 语句和一个处理所有失败情况的 else 语句。
让我们重写前面示例中的代码,让字符串打印出每个字母的等级。我们可以保持我们的 else 语句相同。
grade.go
package main import "fmt" func main() { grade := 60 if grade >= 90 { fmt.Println("A grade") } else if grade >= 80 { fmt.Println("B grade") } else if grade >= 70 { fmt.Println("C grade") } else if grade >= 65 { fmt.Println("D grade") } else { fmt.Println("Failing grade") } }
因为 else if 语句将按顺序进行评估,所以我们可以保持我们的语句非常基本。该程序正在完成以下步骤:
- 如果成绩大于 90,程序将打印 A 成绩,如果成绩小于 90,程序将继续下一条语句……
- 如果成绩大于等于 80,程序会打印 B 级,如果成绩是 79 或以下,程序会继续下一条语句……
- 如果成绩大于等于 70,程序会打印 C 成绩,如果成绩是 69 或以下,程序会继续下一条语句……
- 如果等级大于等于65,程序会打印D级,如果等级小于等于64,程序会继续下一条语句……
- 由于未满足上述所有条件,该程序将打印不及格成绩。
嵌套 If 语句
一旦您对 if、else if 和 else 语句感到满意,您就可以继续使用嵌套条件语句。如果第一个条件执行为真,我们可以使用嵌套 if 语句来检查第二个条件。为此,我们可以在另一个 if-else 语句中添加一个 if-else 语句。让我们看一下嵌套 if 语句的语法:
if statement1 { // outer if statement fmt.Println("true") if nested_statement { // nested if statement fmt.Println("yes") } else { // nested else statement fmt.Println("no") } } else { // outer else statement fmt.Println("false") }
此代码可能会产生一些可能的输出:
如果 statement1 评估为 true,则程序将评估 nested_statement 是否也评估为 true。 如果两种情况都为真,则输出将是:
Output true yes
但是,如果 statement1 的计算结果为 true,而 nested_statement 的计算结果为 false,则输出将是:
Output true no
如果 statement1 的计算结果为 false,则嵌套的 if-else 语句将不会运行,因此 else 语句将单独运行,输出将是:
Output
false
我们还可以在整个代码中嵌套多个 if 语句:
if statement1 { // outer if fmt.Println("hello world") if nested_statement1 { // first nested if fmt.Println("yes") } else if nested_statement2 { // first nested else if fmt.Println("maybe") } else { // first nested else fmt.Println("no") } } else if statement2 { // outer else if fmt.Println("hello galaxy") if nested_statement3 { // second nested if fmt.Println("yes") } else if nested_statement4 { // second nested else if fmt.Println("maybe") } else { // second nested else fmt.Println("no") } } else { // outer else statement("hello universe") }
在这段代码中,除了 else if 语句之外,每个 if 语句中还有一个嵌套的 if 语句。 这将允许在每个条件下提供更多选项。
让我们看一个使用我们的 Grade.go 程序的嵌套 if 语句的示例。 我们可以先检查一个等级是否通过(大于或等于 65%),然后评估数值等级应该与哪个字母等级相当。 但是,如果成绩不及格,我们不需要检查字母成绩,而是可以让程序报告成绩不及格。 我们修改后的带有嵌套 if 语句的代码将如下所示:
grade.go
package main import "fmt" func main() { grade := 92 if grade >= 65 { fmt.Print("Passing grade of: ") if grade >= 90 { fmt.Println("A") } else if grade >= 80 { fmt.Println("B") } else if grade >= 70 { fmt.Println("C") } else if grade >= 65 { fmt.Println("D") } } else { fmt.Println("Failing grade") } }
如果我们将变量grade设置为整数值92运行代码,则满足第一个条件,程序将打印出Passing grade of: 。 接下来,它会检查等级是否大于或等于90,并且由于也满足这个条件,所以它会打印出A。
如果我们在grade变量设置为60的情况下运行代码,那么第一个条件不满足,所以程序将跳过嵌套的if语句并向下移动到else语句,程序打印出Failing grade。
我们当然可以为此添加更多选项,并使用第二层嵌套 if 语句。 也许我们会想要分别评估 A+、A 和 A- 的成绩。 我们可以通过首先检查成绩是否通过,然后检查成绩是否为 90 或以上,然后检查成绩是否超过 96 来获得 A+:
grade.go
... if grade >= 65 { fmt.Print("Passing grade of: ") if grade >= 90 { if grade > 96 { fmt.Println("A+") } else if grade > 93 && grade <= 96 { fmt.Println("A") } else { fmt.Println("A-") } ...
在此代码中,对于设置为 96 的等级变量,程序将运行以下内容:
- 检查成绩是否大于等于65(真)
- 打印出及格分数:
- 检查成绩是否大于等于90(真)
- 检查成绩是否大于96(假)
- 检查成绩是否大于 93 并且小于或等于 96(真)
- 打印一个
- 离开这些嵌套的条件语句并继续剩下的代码
因此,96 分的程序输出如下所示:
Output Passing grade of: A
嵌套 if 语句可以为您的代码添加几个特定级别的条件。
结论
通过使用 if 语句之类的条件语句,您可以更好地控制程序的执行内容。 条件语句告诉程序评估是否满足某个条件。 如果满足条件,它将执行特定代码,但如果不满足,程序将继续向下移动到其他代码。
- 登录 发表评论