前提重点:类型断言,先转换 ,再断言(判断是否转换成功)
Go语言中,类型断言用于将接口类型的变量转换为具体类型。类型断言的语法如下:
value, ok := interfaceVariable.(ConcreteType)
interfaceVariable是一个接口类型的变量。ConcreteType是你希望将接口变量转换成的具体类型。value是转换后的具体类型的值。ok是一个布尔值,表示类型断言是否成功。如果成功,ok为true,否则为false。
如果类型断言失败,ok 为 false,value 将是具体类型的零值。
示例
以下是一个具体的例子,演示如何使用类型断言:
package mainimport ("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 不是一个整数。
