Menu
CoddyTech

不带表达式的 `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"。

challenge icon

挑战

简单

在这个挑战中,你将练习使用不带表达式的 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!")
	}
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: Go 在线编译器