美文网首页
Golang学习笔记-1.8 switch语句

Golang学习笔记-1.8 switch语句

作者: xunk1900 | 来源:发表于2018-07-14 14:13 被阅读0次

    本文系第八篇Golang语言学习教程
    switch是一个条件语句,用于将表达式的值与可能匹配的选项列表进行比较,并根据情况执行相应代码。是替代if else的常用方式。

    下面通过讲解一个简单的运算程序来了解switch语句

    package main
    
    import "fmt"
    
    func eval(a, b int, op string) int { //定义eval函数,输入三个值 a, b, op 输出类型为 int
        var result int
        switch op {   // op 为表达式,将 op 的值与下面 case 比较
        case "+":  //若 op 值为 + , 则将 result 赋值 a + b 以此类推
            result = a + b
        case "-":
            result = a - b
        case "*":
            result = a * b
        case "/":
            result = a / b
        default:  //如果输入没有以上匹配的字符,则属于默认情况,运行默认情况
            fmt.Println("unsupported operator:" + op)  //输出不识别 op 值的报错
    
        }
        return result
    }
    
    func main(){
        fmt.Println(
            eval(10, 4, "+"),
            eval(15, 6, "-"),
            eval(2, 4, "*"),
            eval(100, 4, "/"),
        )
    }
    

    在以上程序中,switch 将 op 的值作为表达式,与case比较。op值若为"+",所以匹配到第一个case,给result赋值后退出case。以此类推
    若op输入的值没有匹配到,则属于默认情况,运行默认代码,本程序输出报错。

    以上程序执行结果为 :14 9 8 25

    多表达式判断

    通过用,逗号隔开,一个case中可以写多个表达式

    func main(){
        letter := "i"
        switch letter {
        case "a", "o", "e", "i", "u":  //用 "," 逗号分隔,多个表达式
            fmt.Println(letter, "is in vowel")
        default:
            fmt.Println(letter, "is not in vowel")
        }
    }
    

    在 case a,e,i,o,u: 这一行中,列举了所有的元音。只要匹配该项,则将输出 i is in vowel

    无表达式的switch

    switch中,表达式是可选的,如果省略表达式,则这个switch语句等同于switch true,每个case都被认定为有效,执行相应的代码块。

    func main(){
        num := 79
        switch  {  //省略表达式
        case num >= 0 && num <= 50:
            fmt.Println("num is greater than 0 and less than 50")
        case num >= 50 && num <= 100:
            fmt.Println("num is greater than 50 and less than 100")
        case num >= 100:
            fmt.Println("num is greater than 100")
        }
    
    }
    

    在以上程序中,num值为79,省略表达式,则匹配每个case,直至结束。
    以上程序输出输出: num is greater than 50 and less than 100

    Fallthrough语句

    在 Go 中,每执行完一个 case 后,会从 switch语句中跳出来,不再做后续 case 的判断和执行。使用fallthrough语句可以在已经执行完成的 case 之后,把控制权转移到下一个case 的执行代码中。
    还是上一个程序,但如果将num赋值100,只会匹配到第二个case后跳出,我们加上fallthrough后查看效果。

    func main(){
        num := 79
        switch  {  //省略表达式
        case num >= 0 && num <= 50:
            fmt.Println("num is greater than 0 and less than 50")
        case num >= 50 && num <= 100:
            fmt.Println("num is greater than 50 and less than 100")
            fallthrough
        case num >= 100:
            fmt.Println("num is greater than 100")
        }
    
    }
    

    num := 100,可以配置第二个case,也可以匹配第三个,通过fallthrough,我们成功的同时匹配到了两个case。

    注意:fallthrough语句应该是 case 子句的最后一个语句。不要写在case语句的中间。

    以上为学习Golang switch篇

    相关文章

      网友评论

          本文标题:Golang学习笔记-1.8 switch语句

          本文链接:https://www.haomeiwen.com/subject/matypftx.html