在Go语言中,可以使用类型断言 .(Type)
或者 Type.(interface)
来进行接口类型转换。
.(Type)
:通过将接口类型转换为具体类型来操作。var i interface{} = "Hello"
s := i.(string)
fmt.Println(s) // Output: Hello
n, 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{} = 42
if s, ok := i.(string); ok {
fmt.Println(s) // Output: 42
} else {
fmt.Println("Conversion failed")
}
另外,还可以使用 switch
语句来进行多个类型的断言。
var i interface{} = 42
switch 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”。