接口interface
接口是一组方法签名,所有实现了该签名的子类都可以赋值给这个接口变量。
go中有两种接口的使用场景:1. 用作类型签名,2. 空接口(无方法签名)
用作类型签名
1 | go复制代码type Abser interface { |
空接口
空接口就是没有任何方法签名的接口,它可以接收任意类型的值
1 | go复制代码func main() { |
interface与nil
接口类似于下面这样一个结构体,一个接口变量记录了它实际指向的值和这个值的类型
1 | go复制代码type interface struct{ |
下面这个例子,给一个接口类型赋值一个bool值,实际上接口内部存储了两个值,一个是具体的值,一个是类型
1 | go复制代码var i interface{} |
不要判断interface是否为nil
1 | go复制代码func main() { |
使用断言判断接口是否为nil
语法:v,ok:=i.(type)
1 | go复制代码func main() { |
本文转载自: 掘金