Menu
CoddyTech

带表达式的 `switch`

本课属于 Coddy GO 学习旅程的“基础知识”单元。第 40 课,共 109 课。

让我们学习如何在 Go 的 switch 语句中使用表达式,这样我们就可以直接在每个 case 中判断条件。

首先,我们来看看如何在每个 case 中使用条件的 switch 语句,检查一个数字是正数、负数还是零:

num := -5
switch {
case num > 0:
    fmt.Println("Positive number")
case num < 0:
    fmt.Println("Negative number")
default:
    fmt.Println("Zero")
}

运行这段代码后,程序会在屏幕上显示:

Negative number

注意,我们使用的是 switch {,后面没有值。这意味着 Go 会将每个 case 表达式作为布尔条件进行求值。由于 num 是 -5,第二个 case num < 0 的求值结果为 true,因此会打印 "Negative number"。

我们也可以直接在 switch 语句中初始化变量。来看看它是如何工作的:

switch num := -5; {
case num > 0:
    fmt.Println("Positive number")
case num < 0:
    fmt.Println("Negative number")
default:
    fmt.Println("Zero")
}

运行这段代码后,我们会得到相同的结果:

Negative number

在这个示例中,我们直接在 switch 语句中声明并初始化了 num。分号将初始化与 switch 表达式分开(这里表达式为空)。这样可以让代码更紧凑,同时保持相同的功能。

challenge icon

挑战

入门
在这个挑战中,你将练习在 Go 中使用简单的 switch 表达式。你需要补全代码,根据星期几的名称,使用 switch 语句确定对应的描述。

变量 dayName 已定义,值为 "Wednesday"。你的任务是使用 switch 表达式,将 description 变量设置为:
- 星期一对应 "Start of the week"
- 星期三对应 "Midweek"
- 星期五对应 "Almost weekend"
- 星期六或星期日对应 "Weekend"
- 其他日期对应 "Regular day"

亲手试试

	// TODO:编写 switch 语句,根据 dayName 设置 description
	// 如果是 Monday:设置为 "Start of the week"
	// 如果是 Wednesday:设置为 "Midweek"
	// 如果是 Friday:设置为 "Almost weekend"
	// 如果是 Saturday 或 Sunday:设置为 "Weekend"
	// 如果是其他日期:设置为 "Regular day"
	
	
	// 打印结果
	fmt.Printf("%s is %s\n", dayName, description)
quiz icon自我测试

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

基础知识中的所有课

自己练习: Go 在线编译器