第十回:Go 语言条件语句

向左走还是向右走?(If / Switch)
唐伯虎
唐伯虎: 人生充满了选择。是选秋香还是选石榴姐?是去考科举还是去卖身?代码也一样,这叫流程控制

🛤️ 岔路口 (if...else)

最基本的选择。

if beauty == "秋香" {
    fmt.Println("追上去!")
} else {
    fmt.Println("继续敲碗唱歌")
}

独门秘籍:带初始化的 if

你可以在 if 里面顺手做个赋值,这个变量只在 if 块里有效。这招在处理错误时特别好用。

// 格式:if 初始化语句; 条件 { ... }
if score := 95; score > 90 {
    fmt.Println("状元郎!")
}
// fmt.Println(score) // 这里会报错,因为 score 出了 if 就死了

🔀 多重选择 (switch)

当选择太多时,用 switch 更清晰。Go 的 switch 非常智能:

switch name {
case "秋香", "冬香":
    fmt.Println("美女!")
case "石榴姐":
    fmt.Println("绝代风华")
    fallthrough // 强制执行下一个 case
default:
    fmt.Println("路人甲")
}

无表情 Switch (Tagless Switch)

switch 后面不跟变量,直接在 case 里写条件。这相当于 if-else if-else 的整容版。

score := 85
switch {
case score >= 90:
    fmt.Println("优")
case score >= 80:
    fmt.Println("良")
default:
    fmt.Println("差")
}

🎯 练功房(选美大会)

请补全代码,使用“带初始化的 if”来判断分数。

package main
import "fmt"

func getScore() int { return 95 }

func main() {
    // 任务:在一行里调用 getScore() 并判断是否大于 90
    if ______; ______ {
        fmt.Println("秋香")
    }
}

任务: 填空。

答案: s := getScore(); s > 90

解析: 这样写的好处是变量 s 用完即焚,不会污染外面的环境。Go 程序员都爱这么写!