跳到主要内容

类型断言

单值断言

语法格式

func main() {
var v any = "go"
s := v.(string) // 断言动态类型为 string;失败时 panic
println(s)
}

comma ok 断言

语法格式

func main() {
var v any = "go"
s, ok := v.(string) // 失败时返回 string 零值和 false
println(s, ok)
}

type switch

语法格式

package main

import "fmt"

func describe(v any) {
switch x := v.(type) { // v.(type) 只能用于 type switch
case int:
fmt.Println("int", x) // x 为 int
case string:
fmt.Println("string", x) // x 为 string
default:
fmt.Println("other")
}
}

失败行为

形式断言成功断言失败
v.(T)返回动态值panic
value, ok := v.(T)返回动态值和 true返回零值和 false
switch v.(type)执行匹配的类型分支执行 default