go语言基础之switch语句 和 fallthrough 用途

Go里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch, 但是可以使用fallthrough强制执行后面的case代码:
示例1:
package main

import "fmt"

func main() {
        num := 3

        switch num {
        case 1:
                fmt.Println("按下的是1楼")
        case 2:
                fmt.Println("按下的是2楼")
        case 3:
                fmt.Println("按下的是3楼")
        case 4:
                fmt.Println("按下的是4楼")
        }
}

#执行结果

按下的是3楼

  

示例2:

package main

import "fmt"

func main() {
        num := 5

        switch num {
        case 1:
                fmt.Println("按下的是1楼")
                //break //go语言保留了break关键字,跳出switch语言,不写,默认就包含了。
        case 2:
                fmt.Println("按下的是2楼")
        case 3:
                fmt.Println("按下的是3楼")
        case 4:
                fmt.Println("按下的是4楼")
        default:
                fmt.Println("按下的是xxx楼")
        }
}

#执行结果

按下的是xxx楼

示例3: 需要输入按下的楼层

package main

import "fmt"

func main() {
        var num int
        fmt.Printf("请按下楼层:")
        fmt.Scan(&num)

        switch num {
        case 1:
                fmt.Println("按下的是1楼")
        case 2:
                fmt.Println("按下的是2楼")
        case 3:
                fmt.Println("按下的是3楼")
        case 4:
                fmt.Println("按下的是4楼")
        default:
                fmt.Println("按下的是xxx楼")
        }
}

#执行结果:

请按下楼层:2   #输入2
按下的是2楼

用途:fallthrough //不跳出switch语句,后面的无条件执行

示例4:

package main

import "fmt"

func main() {
        var num int
        fmt.Printf("请按下楼层:")
        fmt.Scan(&num)

        switch num {
        case 1:
                fmt.Println("按下的是1楼")
                fallthrough //不跳出switch语句,后面的无条件执行
        case 2:
                fmt.Println("按下的是2楼")
                fallthrough
        case 3:
                fmt.Println("按下的是3楼")
                fallthrough
        case 4:
                fmt.Println("按下的是4楼")
                fallthrough
        default:
                fmt.Println("按下的是xxx楼")
        }
}

#执行结果

请按下楼层:1
按下的是1楼
按下的是2楼
按下的是3楼
按下的是4楼
按下的是xxx楼

 

示例5: (推荐用法)

package main

import "fmt"

func main() {

        switch num := 1; num {
        case 1:
                fmt.Println("按下的是1楼")
        case 2:
                fmt.Println("按下的是2楼")
        case 3:
                fmt.Println("按下的是3楼")
        case 4:
                fmt.Println("按下的是4楼")
        default:
                fmt.Println("按下的是xxx楼")
        }
}

#执行结果:

按下的是1楼

 

示例6: case 后面接数字,可以写多个

package main //必须有一个main包

import "fmt"

func main() {
        //支持一个初始化语句, 初始化语句和变量本身, 以分号分隔
        switch num := 4; num { //switch后面写的是变量本身
        case 1:
                fmt.Println("按下的是1楼")

        case 2:
                fmt.Println("按下的是2楼")

        case 3, 4, 5:
                fmt.Println("按下的是yyy楼")

        case 6:
                fmt.Println("按下的是4楼")

        default:
                fmt.Println("按下的是xxx楼")
        }
}

#执行结果:

按下的是yyy楼

  

示例7:

package main

import "fmt"

func main() {
        score := 85
        switch {
        case score > 90:  //case后面可以放条件
                fmt.Println("优秀")
        case score > 80:
                fmt.Println("良好")
        case score > 70:
                fmt.Println("一般")
        default:
                fmt.Println("其它")
        }
}

#执行结果:

良好