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