go语言的类型断言详解,及一些例子
时间: 2023-07-07 20:42:45 浏览: 74
在 Golang 中,类型断言是一种将接口类型值转换为其他类型的方式,其语法形式为 `x.(T)`,其中 x 表示要进行类型断言的接口类型变量,T 表示目标类型。如果 x 实际存储的值是 T 类型的,那么断言成功,返回一个 T 类型的值;否则,断言失败,返回一个 panic 异常。
以下是一些类型断言的例子:
1. 普通类型断言
```
var x interface{} = "hello"
str, ok := x.(string)
if ok {
fmt.Println(str)
} else {
fmt.Println("x is not a string")
}
```
2. 类型选择语句中的类型断言
```
switch x.(type) {
case int:
fmt.Println("x is an integer")
case string:
fmt.Println("x is a string")
default:
fmt.Println("x is of unknown type")
}
```
3. 检查一个值是否实现了某个接口
```
var x interface{} = new(MyStruct)
if _, ok := x.(MyInterface); ok {
fmt.Println("x implements MyInterface")
} else {
fmt.Println("x does not implement MyInterface")
}
```
需要注意的是,类型断言只能用于接口类型变量,不能用于非接口类型变量。此外,在进行类型断言时,还需要注意类型转换的安全性,防止出现类型不兼容的情况。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)