go结构switch

Go 语言中的 switch 结构使用上更加灵活。它接受任意形式的表达式:

switch var1 {
    case val1:
        ...
    case val2:
        ...
    default:
        ...
}

如果执行完每个分支的代码后,还希望继续执行后续分支的代码,可以使用 fallthrough 关键字来达到目的

switch i {
    case 0: fallthrough
    case 1:
        f() // 当 i == 0 时函数也会被调用
}

switch 语句的第二种形式是不提供任何被判断的值(实际上默认为判断是否为 true)

package main

import "fmt"

func main() {
    var num1 int = 7
    switch {
        case num1 < 0:
            fmt.Println("Number is negative")
        case num1 > 0 && num1 < 10:
            fmt.Println("Number is between 0 and 10")
        default:
            fmt.Println("Number is 10 or greater")
    }
}
//Number is between 0 and 10

switch 语句的第三种形式是包含一个初始化语句:

switch result := calculate(); {
    case result < 0:
        ...
    case result > 0:
        ...
    default:
        // 0
}