跳转到主要内容

标签(标签)

资源精选(342) Go开发(108) Go语言(103) Go(99) angular(82) LLM(75) 大语言模型(63) 人工智能(53) 前端开发(50) LangChain(43) golang(43) 机器学习(39) Go工程师(38) Go程序员(38) Go开发者(36) React(33) Go基础(29) Python(24) Vue(22) Web开发(20) Web技术(19) 精选资源(19) 深度学习(19) Java(18) ChatGTP(17) Cookie(16) android(16) 前端框架(13) JavaScript(13) Next.js(12) 安卓(11) typescript(10) 资料精选(10) NLP(10) 第三方Cookie(9) Redwoodjs(9) LLMOps(9) Go语言中级开发(9) 自然语言处理(9) 聊天机器人(9) PostgreSQL(9) 区块链(9) mlops(9) 安全(9) 全栈开发(8) ChatGPT(8) OpenAI(8) Linux(8) AI(8) GraphQL(8) iOS(8) 软件架构(7) Go语言高级开发(7) AWS(7) C++(7) 数据科学(7) whisper(6) Prisma(6) 隐私保护(6) RAG(6) JSON(6) DevOps(6) 数据可视化(6) wasm(6) 计算机视觉(6) 算法(6) Rust(6) 微服务(6) 隐私沙盒(5) FedCM(5) 语音识别(5) Angular开发(5) 快速应用开发(5) 提示工程(5) Agent(5) LLaMA(5) 低代码开发(5) Go测试(5) gorm(5) REST API(5) 推荐系统(5) WebAssembly(5) GameDev(5) CMS(5) CSS(5) machine-learning(5) 机器人(5) 游戏开发(5) Blockchain(5) Web安全(5) Kotlin(5) 低代码平台(5) 机器学习资源(5) Go资源(5) Nodejs(5) PHP(5) Swift(5) 智能体(4) devin(4) Blitz(4) javascript框架(4) Redwood(4) GDPR(4) 生成式人工智能(4) Angular16(4) Alpaca(4) SAML(4) JWT(4) JSON处理(4) Go并发(4) kafka(4) 移动开发(4) 移动应用(4) security(4) 隐私(4) spring-boot(4) 物联网(4) nextjs(4) 网络安全(4) API(4) Ruby(4) 信息安全(4) flutter(4) 专家智能体(3) Chrome(3) CHIPS(3) 3PC(3) SSE(3) 人工智能软件工程师(3) LLM Agent(3) Remix(3) Ubuntu(3) GPT4All(3) 软件开发(3) 问答系统(3) 开发工具(3) 最佳实践(3) RxJS(3) SSR(3) Node.js(3) Dolly(3) 移动应用开发(3) 编程语言(3) 低代码(3) IAM(3) Web框架(3) CORS(3) 基准测试(3) Go语言数据库开发(3) Oauth2(3) 并发(3) 主题(3) Theme(3) earth(3) nginx(3) 软件工程(3) azure(3) keycloak(3) 生产力工具(3) gpt3(3) 工作流(3) C(3) jupyter(3) 认证(3) prometheus(3) GAN(3) Spring(3) 逆向工程(3) 应用安全(3) Docker(3) Django(3) R(3) .NET(3) 大数据(3) Hacking(3) 渗透测试(3) C++资源(3) Mac(3) 微信小程序(3) Python资源(3) JHipster(3) 大型语言模型(2) 语言模型(2) 可穿戴设备(2) JDK(2) SQL(2) Apache(2) Hashicorp Vault(2) Spring Cloud Vault(2) Go语言Web开发(2) Go测试工程师(2) WebSocket(2) 容器化(2) AES(2) 加密(2) 输入验证(2) ORM(2) Fiber(2) Postgres(2) Gorilla Mux(2) Go数据库开发(2) 模块(2) 泛型(2) 指针(2) HTTP(2) PostgreSQL开发(2) Vault(2) K8s(2) Spring boot(2) R语言(2) 深度学习资源(2) 半监督学习(2) semi-supervised-learning(2) architecture(2) 普罗米修斯(2) 嵌入模型(2) productivity(2) 编码(2) Qt(2) 前端(2) Rust语言(2) NeRF(2) 神经辐射场(2) 元宇宙(2) CPP(2) 数据分析(2) spark(2) 流处理(2) Ionic(2) 人体姿势估计(2) human-pose-estimation(2) 视频处理(2) deep-learning(2) kotlin语言(2) kotlin开发(2) burp(2) Chatbot(2) npm(2) quantum(2) OCR(2) 游戏(2) game(2) 内容管理系统(2) MySQL(2) python-books(2) pentest(2) opengl(2) IDE(2) 漏洞赏金(2) Web(2) 知识图谱(2) PyTorch(2) 数据库(2) reverse-engineering(2) 数据工程(2) swift开发(2) rest(2) robotics(2) ios-animation(2) 知识蒸馏(2) 安卓开发(2) nestjs(2) solidity(2) 爬虫(2) 面试(2) 容器(2) C++精选(2) 人工智能资源(2) Machine Learning(2) 备忘单(2) 编程书籍(2) angular资源(2) 速查表(2) cheatsheets(2) SecOps(2) mlops资源(2) R资源(2) DDD(2) 架构设计模式(2) 量化(2) Hacking资源(2) 强化学习(2) flask(2) 设计(2) 性能(2) Sysadmin(2) 系统管理员(2) Java资源(2) 机器学习精选(2) android资源(2) android-UI(2) Mac资源(2) iOS资源(2) Vue资源(2) flutter资源(2) JavaScript精选(2) JavaScript资源(2) Rust开发(2) deeplearning(2) RAD(2)

介绍


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

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

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

  • 如果学生的考试成绩超过 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 语句将按顺序进行评估,所以我们可以保持我们的语句非常基本。该程序正在完成以下步骤:

  1. 如果成绩大于 90,程序将打印 A 成绩,如果成绩小于 90,程序将继续下一条语句……
  2. 如果成绩大于等于 80,程序会打印 B 级,如果成绩是 79 或以下,程序会继续下一条语句……
  3. 如果成绩大于等于 70,程序会打印 C 成绩,如果成绩是 69 或以下,程序会继续下一条语句……
  4. 如果等级大于等于65,程序会打印D级,如果等级小于等于64,程序会继续下一条语句……
  5. 由于未满足上述所有条件,该程序将打印不及格成绩。

嵌套 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 的等级变量,程序将运行以下内容:

  1. 检查成绩是否大于等于65(真)
  2. 打印出及格分数:
  3. 检查成绩是否大于等于90(真)
  4. 检查成绩是否大于96(假)
  5. 检查成绩是否大于 93 并且小于或等于 96(真)
  6. 打印一个
  7. 离开这些嵌套的条件语句并继续剩下的代码

因此,96 分的程序输出如下所示:

Output
Passing grade of: A


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

结论


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

文章链接