Golang 中的 If 分支语句

GolangGolangBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在创建待办计划时,如果任务尚未完成,它将被添加到待办事项列表中;如果任务已经完成,它将被移动到已完成事项中。

在编程世界中,我们也需要根据不同的需求改变程序的执行方向。接下来,让我们学习 if 分支语句,这是一种流程控制语句。

知识点:

  • if 语句
  • if-else 语句
  • else-if 语句
  • 格式化规则

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL go(("`Golang`")) -.-> go/BasicsGroup(["`Basics`"]) go(("`Golang`")) -.-> go/FunctionsandControlFlowGroup(["`Functions and Control Flow`"]) go(("`Golang`")) -.-> go/AdvancedTopicsGroup(["`Advanced Topics`"]) go/BasicsGroup -.-> go/values("`Values`") go/BasicsGroup -.-> go/variables("`Variables`") go/FunctionsandControlFlowGroup -.-> go/if_else("`If Else`") go/FunctionsandControlFlowGroup -.-> go/switch("`Switch`") go/AdvancedTopicsGroup -.-> go/time("`Time`") subgraph Lab Skills go/values -.-> lab-149071{{"`Golang 中的 If 分支语句`"}} go/variables -.-> lab-149071{{"`Golang 中的 If 分支语句`"}} go/if_else -.-> lab-149071{{"`Golang 中的 If 分支语句`"}} go/switch -.-> lab-149071{{"`Golang 中的 If 分支语句`"}} go/time -.-> lab-149071{{"`Golang 中的 If 分支语句`"}} end

if 语句

最常用的分支语句是 if 语句,它用于检查预设条件是否为真,然后决定是否执行代码块。以下是其格式:

if condition {
    code block
}

当条件为真时,程序会执行代码块;否则,程序会跳过代码块。

让我们来看一个实际的例子。创建一个名为 if.go 的新文件,并将以下代码写入其中:

cd ~/project
touch if.go
package main

import (
    "fmt"
)

func main() {
    var num = 40
    // 使用 % 获取两个数相除的余数
    if num % 2 == 0 {
        fmt.Println(num, "is even")
    }
}

运行程序:

go run if.go

结果如下:

40 is even

在这个程序中,我们首先声明了一个整数变量 num。然后,在 if 语句中,我们使用取模运算符 % 来获取 num 除以 2 的余数,并使用相等运算符 == 检查余数是否等于 0。如果条件成立,代码块将被执行,并输出该数字是偶数。

if else 语句

如果希望在 if 语句的条件不满足时输出其他内容,我们应该怎么做?在这种情况下,可以使用 if else 语句。如果 if 语句中的条件为真,则执行 if 语句中的代码块;否则,执行 else 语句中的代码块。

if else 语句的格式与 if 语句类似:

if condition {
    code
} else {
    code
}

让我们来看一个例子。以下程序将输出今天是工作日还是周末:

cd ~/project
touch if_else.go
package main

import (
    "fmt"
    "time"
)

func main() {
    // 获取当前时间
    t := time.Now()

    // 检查是否是周六或周日
    if t.Weekday() == time.Saturday || t.Weekday() == time.Sunday {
        fmt.Println("Today is:", t.Weekday(), "weekend")
    } else {
        fmt.Println("Today is:", t.Weekday(), "weekday")
    }
}

运行程序:

go run if_else.go

结果如下:

Today is: Monday weekday

我们使用标准库中的 time 包来获取当前时间。然后,通过与周六和周日进行比较,如果是周末,则执行 if 语句中的代码块;否则,执行 else 语句中的代码块。

else if 语句

除了检查单个条件外,我们还可以使用 else if 语句来检查多个条件。

其格式如下:

if condition {
    code
} else if condition {
    code
} else {
    code
}

在分支语句中,你可以有多个 else if 语句,但只能有一个 if 和一个 else 语句。else if 语句应位于 ifelse 语句之间。

让我们重写“if else”部分中的程序,以输出星期几:

更新 if_else.go 文件:

package main

import (
    "fmt"
    "time"
)

func main() {
    today := time.Now().Weekday()

    if today == time.Monday {
        fmt.Println("Today is Monday")
    } else if today == time.Tuesday {
        fmt.Println("Today is Tuesday")
    } else if today == time.Wednesday {
        fmt.Println("Today is Wednesday")
    } else if today == time.Thursday {
        fmt.Println("Today is Thursday")
    } else if today == time.Friday {
        fmt.Println("Today is Friday")
    } else if today == time.Saturday {
        fmt.Println("Today is Saturday")
    } else {
        fmt.Println("Today is Sunday")
    }
}

运行程序:

go run if_else.go

运行后,结果如下:

Today is Monday

在前面的程序中,我们首先使用 time.Now() 获取当前时间,然后从当前时间中获取星期几。在这个程序中,这两行代码被合并为一行。获取星期几后,程序会将其与分支语句匹配以输出星期几。

if 语句中的初始化语句

在之前的学习中,if 语句只有一个参数,即条件:

if condition {
    code
}

完整的参数还包括一个初始化语句,这是 Go 中的一个可选参数。它通常用于临时变量的声明和初始化,初始化语句在使用时用分号分隔。语法如下:

if initialization statement; condition {
    code
}

我们重写了“if else”部分中的程序。我们将变量声明移到 if 语句中作为初始化语句,以缩短代码:

package main

import (
    "fmt"
    "time"
)

func main() {
    if t := time.Now(); t.Weekday() == time.Saturday || t.Weekday() == time.Sunday {
        fmt.Println("Today is:", t.Weekday(), "weekend, studying and recharging")
    } else {
        fmt.Println("Today is:", t.Weekday(), "also studying hard")
    }
}

运行程序:

go run if_else.go

可以看到它运行正确:

Today is: Monday also studying hard

注意: 在初始化语句中声明的变量的作用域仅限于 if 块内。

格式化问题

我不知道你在学习 if 语句时是否注意到了 Go 的格式化要求。

  • 在 Go 中,关键字 ifelseelse if 需要与右大括号 } 在同一行。
  • else ifelse 关键字也需要与前一个左大括号在同一行,否则编译器会在编译时报告语法错误。

如果我们将 else 语句移到下一行后运行程序,编译器会报告语法错误。

总结

在本实验中,我们讲解了 if 分支语句,主要包括以下几点:

  • if 分支代码块中,可以有多个 else if 语句,但只能有一个 if 和一个 else 语句。
  • else if 语句必须放在 ifelse 语句之间。
  • 你可以在 if 中使用初始化语句来缩短代码。
  • 编译器强制要求关键字 ifelseelse if 必须与大括号在同一行。

您可能感兴趣的其他 Golang 教程