介绍
在创建待办计划时,如果任务尚未完成,它将被添加到待办事项列表中;如果任务已经完成,它将被移动到已完成事项中。
在编程世界中,我们也需要根据不同的需求改变程序的执行方向。接下来,让我们学习 if
分支语句,这是一种流程控制语句。
知识点:
if
语句if-else
语句else-if
语句- 格式化规则
在创建待办计划时,如果任务尚未完成,它将被添加到待办事项列表中;如果任务已经完成,它将被移动到已完成事项中。
在编程世界中,我们也需要根据不同的需求改变程序的执行方向。接下来,让我们学习 if
分支语句,这是一种流程控制语句。
知识点:
if
语句if-else
语句else-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
语句的条件不满足时输出其他内容,我们应该怎么做?在这种情况下,可以使用 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
语句来检查多个条件。
其格式如下:
if condition {
code
} else if condition {
code
} else {
code
}
在分支语句中,你可以有多个 else if
语句,但只能有一个 if
和一个 else
语句。else if
语句应位于 if
和 else
语句之间。
让我们重写“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 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 的格式化要求。
if
、else
和 else if
需要与右大括号 }
在同一行。else if
和 else
关键字也需要与前一个左大括号在同一行,否则编译器会在编译时报告语法错误。如果我们将 else
语句移到下一行后运行程序,编译器会报告语法错误。
在本实验中,我们讲解了 if
分支语句,主要包括以下几点:
if
分支代码块中,可以有多个 else if
语句,但只能有一个 if
和一个 else
语句。else if
语句必须放在 if
和 else
语句之间。if
中使用初始化语句来缩短代码。if
、else
和 else if
必须与大括号在同一行。