Go 类型切换语句

示例

一个简单的类型开关:

// 假设x是类型interface {}的表达式
switch t := x.(type) {
case nil:
    // x为零
    // t将为interface {}类型
case int: 
    // x的基础类型为int
    // 在这种情况下,t也将是int
case string:
    // x的基础类型是字符串
    // 在这种情况下,t也将是字符串
case float, bool:
    // x的基本类型是float或bool
    // 因为我们不知道哪个,所以在这种情况下,t是interface {}类型的
default:
    // x的基础类型不是用于测试的任何类型
    // t是这种类型的interface {}
}


您可以测试任何类型,包括error,用户定义的类型,接口类型和函数类型:

switch t := x.(type) {
case error:
    log.Fatal(t)
case myType:
    fmt.Println(myType.message)
case myInterface:
    t.MyInterfaceMethod()
case func(string) bool:
    if t("Hello world?") {
        fmt.Println("你好,世界!")
    }
}