4.2 Go switch

4.2 Go switch

switch语句用于基于不同条件执行不同动作,每一个case分支唯一,自上而下逐一测试,直到匹配结束,默认自动终止不需要break

2. switch基本语法

  1. switch后面跟着表达式(变量、常量、有返回值函数等)
  2. case后面的表达式必须和switch表达式数据类型一致
  3. case后可以有多个表达式
  4. case后面表达式常量不得重复
package main

import "fmt"

func main() {
    var week int
    fmt.Println("请输入星期几:")
    fmt.Scanln(&week)

    switch week {
    case 1:
        fmt.Println("星期一,上班!!")
    case 2, 3, 4, 5:
        fmt.Println("星期二到星期五,你还得上班!!")
    case 6:
        fmt.Println("周六你就想休息?加班!!")
    case 7:
        fmt.Println("老子迟早要辞职,终于能休息了!!")
    default:
        fmt.Println("输入错误你就必须得上班!!")
    }
}
  1. switch替代if-else使用
package main

import "fmt"

func main() {
    var score int
    fmt.Println("请录入你的成绩:>")
    fmt.Scanln(&score)
    switch {
    case score > 90:
        fmt.Println("成绩优秀")
    case score >= 70:
        fmt.Println("及格中等")
    case score >= 60:
        fmt.Println("勉强及格了")
    default:
        fmt.Println("恭喜你,考试不及格")
    }
}
  1. switch之穿透fallthrough,在case语句块后添加fallthrough会继续执行下一个case
package main

import "fmt"

func main() {
    var score int
    fmt.Println("请录入你的成绩:>")
    fmt.Scanln(&score)
    switch {
    case score > 90:
        fmt.Println("成绩优秀")
        fallthrough
    case score >= 70:
        fmt.Println("及格中等")
    case score >= 60:
        fmt.Println("勉强及格了")
    default:
        fmt.Println("恭喜你,考试不及格")
    }
}

7.switch还可以用于判断interface变量实际存储的变量类型。

package main

import "fmt"

func main() {
    var x interface{} //x是空接口类型,可以接收任意类型
    var y = 19.9
    x = y
    switch i := x.(type) {
    case nil:
        fmt.Printf("x的类型是%T\n", i)
    case float64:
        fmt.Printf("x的类型是%T\n", i)
    default:
        fmt.Println("未知类型")
    }
}

2.1. switch和if

判断的具体数值不多,符合整数、浮点数、字符、字符串等类型,建议用switch。

对bool类型的判断,用if,if可控范围更广。

posted @ 2019-07-27 21:24  笑得好美  阅读(131)  评论(0编辑  收藏  举报