一,接口实例的创建方式
第一种是通过创建接口的实现类实例,然后把该实例的引用地址赋值给接口即可
type a struct{
}
func (af *a) get(){
}
type jj interface{
get()
}
//这里也就是a结构体实现了jj接口,在go种只要一个结构体中含有某个接口的全部成员方法,那么这个结构体就是实现了该接口
h:=&a{}
var d jj=&h//这样也就创建了一个jj的接口实例
第二种是通过同类型的接口实例赋值给当前接口
//在go种只要两个接口内的成员方法完全相同,那本质上这两个接口没有什么区别,创建其中一个的实例
//通过赋值的方式即可创建另一个的实例,一个结构体实现了其中一个的接口,也就实现了另一个的接口
二,接口的一些知识
如何判断一个接口是不是某个类型的实例
定义为interface{}类型,判断它的具体类型
定义type为interface,判断其具体类型是不是某个具体的结构体实例
var p=12;
var g interface{}=p
//判断g的具体类型是不是int,如果是则返回它的值,如果不是则panic
if res, ok := g.(int); ok {
fmt.Print(res)
}
type a struct{
}
func (af *a) get(){
}
type jj interface{
get()
}
//这里也就是a结构体实现了jj接口,在go种只要一个结构体中含有某个接口的全部成员方法,那么这个结构体就是实现了该接口
h:=&a{}
var d jj=&h//这样也就创建了一个jj的接口实例
swich d.(type){
case *a://是a的结构体的接口实例,执行下边的代码
default:
}