不带表达式的 `switch`
本课属于 Coddy GO 学习旅程的“基础知识”单元。第 41 课,共 109 课。
在 Go 中,我们可以在关键字后使用不带表达式的 switch 语句。当我们想要用清晰的方式判断多个条件时,这很有用。
让我们创建一个根据年龄对人进行分类的程序:
age := 25
switch {
case age < 13:
fmt.Println("Child")
case age < 20:
fmt.Println("Teenager")
case age < 30:
fmt.Println("Young Adult")
default:
fmt.Println("Adult")
}运行这段代码后,程序会按顺序检查每个 case 条件。因为我们的年龄是 25,它不小于 13 或 20,但小于 30,所以第三个 case 匹配。屏幕上会显示文本 "Young Adult":
Young Adult请注意,如果 switch 后面没有表达式,每个 case 都会变成一个布尔条件,其结果为 true 或 false。第一个结果为 true 的 case 会执行其代码块。
如果没有任何情况匹配,就会执行 default 情况。在我们的示例中,如果年龄是 35,输出会是 "Adult"。
挑战
简单在这个挑战中,你将练习使用不带表达式的 switch 语句。这种类型的 switch 适用于你想在不重复使用 if-else 语句的情况下检查多个条件。
我们提供了一个变量 timeOfDay,表示当前小时(采用 24 小时制)。你的任务是补全不带表达式的 switch 语句,根据一天中的时间输出合适的问候语。
使用以下时间范围,并准确输出这些消息:
- 5 到 11:
Good morning! - 12 到 17:
Good afternoon! - 18 到 21:
Good evening! - 其他任何小时:
Hello!(已经写好的default分支)
当 timeOfDay = 14 时,程序会输出 Good afternoon!。
亲手试试
package main
import "fmt"
func main() {
// 这表示当前小时,采用 24 小时制(0-23)
timeOfDay := 14 // 这是下午 2:00
// TODO: 补全不带表达式的 switch 语句
// 根据一天中的时间输出合适的问候语
switch {
// 在这里添加你的 case 分支
default:
fmt.Println("Hello!")
}
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: Go 在线编译器