← Backend / Go / 基础专题

07_条件语句与switch

写 `if`、`else if`、`switch`,并掌握短声明的作用域。

Go 基础专题 07:条件语句与 switch

学习目标:写 if、else if、switch,并掌握短声明的作用域。

核心知识

Go 的 if 条件不需要圆括号,但必须是布尔表达式。else 必须接在前一块的右花括号同一行。if value, err := parse(); err != nil { ... } 可以先执行短语句;其中声明的名字在整个 if、else 结构内可见,结束后失效。

package main

import "fmt"

func grade(score int) string {
    if score < 0 || score > 100 {
        return "无效"
    } else if score >= 60 {
        return "及格"
    }
    return "继续练习"
}

func main() { fmt.Println(grade(75)) }

switch value 按顺序匹配 case,默认自动离开,不需要写 break。多个值可共用一个 case,default 处理其余情况。无表达式的 switch 可以代替一串复杂 if,例如 switch { case score >= 90: ... }。fallthrough 会强制进入下一分支,但通常会让逻辑难懂,少用。

边界先处理异常范围再处理正常范围,避免把 -1 误判为普通“不及格”。复杂布尔表达式可拆成有意义的局部变量。

逐步理解

把 grade 的输入分成无效、及格、不及格三组,分别测试 -1、0、59、60、100、101。switch 与 if 都能表达分支,选择能最清楚呈现规则的一种。多个 case 之间默认不贯穿,是 Go 与一些语言的差别;不要为普通分支添加多余 break。

动手练习

练习:把 "create"、"list"、其他命令映射到三个不同的提示。答案要点:用 switch command 的两个 case 和 default。