如何在Go中编写条件语句

条件语句是每种编程语言的一部分。使用条件语句,我们可以使用有时运行的代码,而在其他时间运行代码,具体取决于当时程序的条件。本教程将指导您使用Go编程语言编写条件语句。

介绍

条件语句是每种编程语言的一部分。 使用条件语句,我们可以使用有时运行的代码,而在其他时间运行代码,具体取决于当时程序的条件。

当我们完全执行程序的每个语句时,我们不会要求程序评估特定条件。 通过使用条件语句,程序可以确定是否满足某些条件,然后告知下一步该做什么。

让我们看一些我们将使用条件语句的示例:

  • 如果学生的考试成绩超过65%,则报告她的成绩通过; 如果没有,请报告她的成绩失败。
  • 如果他的账户中有钱,计算利息; 如果他不这样做,则收取罚款。
  • 如果他们购买10个或更多的橙子,计算5%的折扣; 如果他们少买,那就不要。

通过评估条件并根据是否满足这些条件来分配运行代码,我们正在编写条件代码。

本教程将指导您使用Go编程语言编写条件语句。

如果声明

我们将从if语句开始,它将评估语句是真还是假,并且仅在语句为真的情况下运行代码。

在纯文本编辑器中,打开文件并编写以下代码:

grade.go
package main

import "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来更改此程序的结果:

grade.go
package main

import "fmt"

func main() {
    grade := 60

    if grade >= 65 {
        fmt.Println("Passing grade")
    }
}

当我们保存并运行代码时,我们将不会收到任何输出,因为条件得到满足,并且我们没有告诉程序执行另一个语句。

再举一个例子,让我们计算一下银行账户余额是否低于0.让我们创建一个名为account.go的文件并编写以下程序:

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运行程序时,我们将收到以下输出:

Balance is below 0, add funds now or you will be charged a penalty.

在程序中,我们用-5的值初始化变量balance ,该值小于0.由于余额满足if语句的条件( balance < 0 ),一旦我们保存并运行代码,我们将收到字符串输出。 同样,如果我们将余额更改为0或正数,我们将不会收到任何输出。

其他声明

即使if语句的计算结果为false,我们也可能希望程序执行某些操作。 在我们的成绩示例中,无论成绩是通过还是失败,我们都需要输出。

为此,我们将在上面的等级条件中添加一个else语句,其构造如下:

grade.go
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语句告诉程序无论如何都要做一些事情。

当我们保存并运行程序时,我们将收到以下输出:

Failing grade

如果我们然后重写程序以使等级值为65或更高,我们将获得输出Passing grade

要在银行帐户示例中添加else语句,我们会像这样重写代码:

account.go
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.")
    }
}
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语句之间,如下所示:

account.go
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 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声明相同。

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语句将按顺序进行评估,所以我们可以保持我们的语句非常基本。 该计划正在完成以下步骤:

  1. 如果成绩大于90,该程序将打印A grade ,如果成绩小于90,该程序将继续下一个陈述......

  2. 如果成绩大于或等于80,该程序将打印B grade ,如果等级为79或更低,程序将继续下一个声明......

  3. 如果等级大于或等于70,程序将打印C grade ,如果等级为69或更低,程序将继续下一个陈述......

  4. 如果等级大于或等于65,程序将打印D grade ,如果等级为64或更低,程序将继续下一个陈述......

  5. 该程序将打印Failing grade因为未满足上述所有条件。

嵌套If语句

一旦您对ifelse ifelse语句感到满意,就可以继续使用嵌套的条件语句。 如果第一个条件执行为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。 如果两种情况都为真,则输出为:
true
yes
  • 但是,如果statement1计算结果为true,但nested_statement计算结果为false,则输出结果为:
true
no
  • 如果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语句修改的代码如下所示:

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

如果我们运行代码变量设置为60的代码,则不满足第一个条件,因此程序将跳过嵌套的if语句并向下移动到else语句,程序将打印出Failing grade

我们当然可以为此添加更多选项,并使用第二层嵌套if语句。 也许我们想要分别评估A +,A和A-的等级。 我们可以通过首先检查等级是否通过,然后检查等级是否为90或更高,然后检查A +的成绩是否超过96来实现:

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-")
        }
…

在此代码中,对于设置为96grade变量,程序将运行以下命令:

  1. 检查等级是否大于或等于65(真)
  2. 打印出Passing grade of:
  3. 检查等级是否大于或等于90(真)
  4. 检查等级是否大于96(假)
  5. 检查等级是否大于93且小于或等于96(真)
  6. 打印A
  7. 保留这些嵌套的条件语句并继续使用其余代码

因此,96年级的计划输出如下:

Passing grade of: A

嵌套的if语句可以为您的代码添加几个特定级别的条件。

结论

通过使用if语句之类的if语句,您可以更好地控制程序执行的内容。 条件语句告诉程序评估是否满足某个条件。 如果满足条件,它将执行特定代码,但如果不满足,程序将继续向下移动到其他代码。

要继续练习条件语句,请尝试使用不同的运算符以更熟悉条件语句。