📜  GO语言 switch(1)

📅  最后修改于: 2023-12-03 15:31:03.282000             🧑  作者: Mango

GO语言 Switch

在GO语言中,switch语句用于多个条件分支的情况。它类似于其他语言中的switch语句,但是在GO语言中具有一些独特的语法特性。

基本语法
switch expression {
case value1:
    // do something
case value2:
    // do something
default:
    // do something
}
  • expression可以是任何类型的值,但必须是可比较的类型。
  • 每个case后面跟着一个特定的值,如果expression的值等于某个case的值,则执行该case下的代码。
  • default是可选的,如果没有任何case匹配,则会执行default下的代码。
比较值

GO语言的switch语句可以使用任何可比较类型进行比较,例如intstringbool等等。

func main() {
    num := 1
    switch num {
    case 1:
        fmt.Println("One")
    case 2:
        fmt.Println("Two")
    default:
        fmt.Println("None")
    }
}

输出:

One
比较表达式

对于GO语言的switch语句而言,每个case下都可以使用表达式来进行比较。

func main() {
    num := 3
    switch {
    case num > 0 && num < 10:
        fmt.Println("Between 1 and 10")
    case num > 10 && num < 20:
        fmt.Println("Between 11 and 20")
    default:
        fmt.Println("Out of range")
    }
}

输出:

Out of range
fallthrough关键字

fallthrough关键字用于使switch语句执行后续的case语句,而不考虑case语句的表达式是否匹配。

func main() {
    num := 2
    switch num {
    case 1:
        fmt.Println("One")
        fallthrough
    case 2:
        fmt.Println("Two")
    case 3:
        fmt.Println("Three")
    }
}

输出:

Two
Three
switch和类型断言

在GO语言中,interface{}类型可以保存任何类型的值。通过类型断言,我们可以在switch语句中使用它。

func getType(i interface{}) {
    switch i.(type) {
    case int:
        fmt.Println("Integer")
    case string:
        fmt.Println("String")
    default:
        fmt.Println("Unknown")
    }
}

func main() {
    getType(5)
    getType("Hello")
    getType(true)
}

输出:

Integer
String
Unknown
代码片段
package main

import (
    "fmt"
)

func getType(i interface{}) {
    switch i.(type) {
    case int:
        fmt.Println("Integer")
    case string:
        fmt.Println("String")
    default:
        fmt.Println("Unknown")
    }
}

func main() {
    //基本语法
    num := 1
    switch num {
    case 1:
        fmt.Println("One")
    case 2:
        fmt.Println("Two")
    default:
        fmt.Println("None")
    }

    //比较表达式
    num = 3
    switch {
    case num > 0 && num < 10:
        fmt.Println("Between 1 and 10")
    case num > 10 && num < 20:
        fmt.Println("Between 11 and 20")
    default:
        fmt.Println("Out of range")
    }

    //fallthrough关键字
    num = 2
    switch num {
    case 1:
        fmt.Println("One")
        fallthrough
    case 2:
        fmt.Println("Two")
    case 3:
        fmt.Println("Three")
    }

    //switch和类型断言
    getType(5)
    getType("Hello")
    getType(true)
}