Golang入门教程7:Switch技巧大揭秘

69 阅读4分钟

程序员小明的Switch之旅

有一天,程序员小明正在编写代码,突然他的老板走了过来。

老板:“小明,我们的系统需要根据用户的等级显示不同的欢迎词,你能搞一下吗?”

小明:“当然,老板,这正是switch语句的用武之地。”

于是,小明开始了他的Switch之旅。

情景一:等级一的用户

switch userLevel {
case 1:
    fmt.Println("欢迎你,新手小可爱!")
case 2:
    fmt.Println("欢迎回来,熟练玩家!")
case 3:
    fmt.Println("VIP用户专属,尊贵而来!")
default:
    fmt.Println("欢迎你,探险者!")
}

老板:“好像还不错,但能不能再添点料呢?”

小明:“当然可以,老板。”

情景二:添加表情符号

switch userLevel {
case 1:
    fmt.Println("欢迎你,新手小可爱! 😊")
case 2:
    fmt.Println("欢迎回来,熟练玩家! 😎")
case 3:
    fmt.Println("VIP用户专属,尊贵而来! 🌟")
default:
    fmt.Println("欢迎你,探险者! 🚀")
}

老板:“嗯,有点趣味了。”

情景三:加入定制化信息

switch userLevel {
case 1:
    fmt.Printf("欢迎你,新手小可爱! 😊 你已经玩了 %d 小时啦,继续加油哦!", playHours)
case 2:
    fmt.Printf("欢迎回来,熟练玩家! 😎 你的技能已经达到了 %s 级别,不错不错。", skillLevel)
case 3:
    fmt.Printf("VIP用户专属,尊贵而来! 🌟 你的VIP会员到期时间是:%s,别忘了续费哦!", vipExpireDate)
default:
    fmt.Println("欢迎你,探险者! 🚀")
}

老板:“哈哈,太有创意了,小明。Switch果然是个好东西。”

小明:“是的,老板。Switch就像是生活中的万能工具,可以根据不同的情况,精心定制出最合适的欢迎词。”

老板满意地点点头,对小明说:“好,继续努力,给我们的系统加点色彩吧!”

小明兴致勃勃地继续编写代码,Switch之旅愉快而有趣。

Switch语句解密:生活中的抉择与程序设计的奥妙

在生活中,我们经常面临各种选择,而这些选择往往基于不同的情况而有所不同。在程序设计中,有一个强大的工具能够帮助我们应对这种情况,那就是switch语句。

Switch语句的生活比喻

情景一:选择服装

生活中,我们可能根据天气情况选择不同的服装。switch语句就像是在早晨站在衣柜前思考着今天的着装:

switch weather {
case "sunny":
    wearSunglasses()
case "rainy":
    takeUmbrella()
case "snowy":
    wearWarmCoat()
default:
    dressCasually()
}

这里,weather变量代表着天气情况,根据不同的天气选择了不同的着装方案。

情景二:选择交通工具

在生活中,我们也需要根据目的地和交通状况选择合适的交通工具。switch语句就像是在计划出行时思考着应该使用什么交通工具:

switch destination {
case "work":
    takeBus()
case "beach":
    rideBicycle()
case "countryside":
    driveCar()
default:
    walk()
}

这里,destination变量代表目的地,根据不同的目的地选择了不同的交通工具。

Switch语句的特点

  1. 多分支选择: 就像生活中有各种各样的情况需要考虑,switch语句允许根据不同的条件执行不同的代码块。

  2. 简洁清晰: 生活中的选择可能很复杂,但switch语句通过清晰的结构将不同的选项整齐地组织起来。

  3. 默认选项: 在生活中,有时候我们可能会遇到未知的情况,switch语句的default分支就像是生活中的备选方案。

  4. 无需嵌套: 不同于一连串的if-else语句,switch语句让选择更加直观,避免了深度嵌套的情况。

通过生活中的案例,我们更容易理解switch语句的强大之处,它是一种高效而直观的选择结构,使得我们在编程中能够更加灵活地应对不同的情况。

实践

这段Go代码演示了switch语句的多种用法,包括基本的数值比较、时间处理、条件判断、以及对接口类型的判断。

基本数值比较

i := 2
fmt.Print("Write ", i, " as ")
switch i {
case 1:
    fmt.Println("one")
case 2:
    fmt.Println("two")
case 3:
    fmt.Println("three")
}

在这里,switch语句根据i的值进行匹配,输出相应的结果。

时间处理

switch time.Now().Weekday() {
case time.Sunday, time.Saturday:
    fmt.Println("It's the weekend")
default:
    fmt.Println("It's a weekday")
}

这个switch语句根据当前时间的星期几来输出是周末还是工作日。

条件判断

t := time.Now()
switch {
case t.Hour() < 12:
    fmt.Println("It's before noon")
default:
    fmt.Println("It's after noon")
}

在这里,switch语句根据当前时间的小时数进行条件判断,输出是上午还是下午。

接口类型判断

whoAmI := func(i interface{}) {
    switch t := i.(type) {
    case bool:
        fmt.Println("I'm a bool")
    case int:
        fmt.Println("I'm an int")
    default:
        fmt.Printf("Don't know type %T\n", t)
    }
}
whoAmI(true)
whoAmI(1)
whoAmI("hey")

这个switch语句对接口类型进行判断,根据不同类型输出不同的信息。

这些示例展示了switch语句在不同场景下的灵活应用,既能处理基本的数值匹配,又能应对复杂的条件判断和类型推断。