在Go语言中,可以使用类型断言 .(Type) 或者 Type.(interface) 来进行接口类型转换。
.(Type):通过将接口类型转换为具体类型来操作。var i interface{} = "Hello"s := i.(string)fmt.Println(s) // Output: Hellon, ok := i.(int)fmt.Println(n, ok) // Output: 0 false类型转换 Type.(interface):通过将具体类型转换为接口类型来操作。var s string = "Hello"i := interface{}(s)fmt.Println(i) // Output: Hello需要注意的是,如果断言失败或者转换失败,会导致运行时错误,因此在进行类型转换之前最好使用类型断言来判断接口是否可以转换为特定的类型。可以通过使用空白标识符 _ 来忽略不需要的返回值。
var i interface{} = 42if s, ok := i.(string); ok { fmt.Println(s) // Output: 42} else { fmt.Println("Conversion failed")}另外,还可以使用 switch 语句来进行多个类型的断言。
var i interface{} = 42switch v := i.(type) {case int: fmt.Println("Integer:", v)case string: fmt.Println("String:", v)default: fmt.Println("Unknown type")}上述代码会根据 i 的类型进行不同的处理。如果 i 是 int 类型,则输出 “Integer: 42”;如果 i 是 string 类型,则输出 “String: 42”;否则输出 “Unknown type”。

