前提重点 :类型断言,先转换 ,再断言(判断是否转换成功)
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
不是一个整数。