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