Go接口--类型断言
类型断言
类型断言的用法
类型断言是一个作用在接口值上的操作,作用是从它的操作数中把具体类型的值提取出来,写法如下
1 |
|
如果断言成功,那么返回结果(a)就是x的动态值
如果断言失败(类型错误或者接口值为nil),就会触发panic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17package main
import "fmt"
func main() {
var i interface{} = 10
t1 := i.(int)
fmt.Println(t1) // 10
t2 := i.(string)
fmt.Println(t2) // panic
var i interface{}
var _ = i.(interface{}) // panic
}如果接收两个返回值,断言成功的时候,ok为true,断言失败,ok为false,不引发panic,此时t为T的零值
1 |
|
- 当T是一个接口类型的时候:类型断言检查x的动态类型是否满足T,如果检查成功,动态值不会提取出来,结果仍然是一个接口值,接口值得类型和值部分也没有变更。类型断言的结果是接口类型T。
Type Switch
如果需要判断多种类型,使用switch更方便,高效
1 |
|