前提重点 :类型断言,先转换 ,再断言(判断是否转换成功)
Go语言中,类型断言用于将接口类型的变量转换为具体类型。类型断言的语法如下:
go
value, ok := interfaceVariable.(ConcreteType)
interfaceVariable是一个接口类型的变量。ConcreteType是你希望将接口变量转换成的具体类型。value是转换后的具体类型的值。ok是一个布尔值,表示类型断言是否成功。如果成功,ok为true,否则为false。
如果类型断言失败,ok 为 false,value 将是具体类型的零值。
示例
以下是一个具体的例子,演示如何使用类型断言:
go
package main
import (
"fmt"
)
func main() {
var i interface{} = "hello"
// 类型断言,将接口类型变量 i 转换为字符串类型
s, ok := i.(string)
if ok {
fmt.Println("String value:", s)
} else {
fmt.Println("Type assertion failed")
}
// 尝试将接口类型变量 i 转换为 int 类型
n, ok := i.(int)
if ok {
fmt.Println("Integer value:", n)
} else {
fmt.Println("Type assertion failed")
}
}
运行结果如下:
String value: hello
Type assertion failed
第一个类型断言成功,因为 i 实际上是一个字符串。第二个类型断言失败,因为 i 不是一个整数。