前端之家收集整理的这篇文章主要介绍了
golang学习的点点滴滴:接口复制和接口查询,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
packagemain
import"fmt"
typeIFileinterface{
Read()
Write()
}
typeIReaderinterface{
Read()
}
typeFilestruct{
}
func(f*File)Read(){
}
func(f*File)Write(){
}
funcmain(){
f:=new(File)
varf1IFile=f //ok因为FIle实现了IFile中的所有方法
varf2IReader=f1 //ok因为IFile中包含IReader中所有方法
//varf3IFile=f2 //error因为IReader并不能满足IFile(少一个方法)
//
varf3IReader=new(File) //ok因为File实现了IReader中所有方法
//varf4IFile=f3 //error因为IReader并不能满足IFile同上..如何解决呢?要用接口查询
//接口查询
//这个if语句检查file1接口指向的对象实例是否实现了IFile接口
//如果实现了
//则执行特定的代码。
//注意:这里强调的是对象实例,也就是new(File)
//File包含IFile里所有的方法
//所以ok=true
iff5,ok:=f3.(IFile);ok{
fmt.Println(f5)
}
//询问接口它指向的对象是否是某个类型
//这个if语句判断file1接口指向的对象实例是否是*File类型
//依然ok
iff6,ok:=f3.(*File);ok{
fmt.Println(f6)
}
fmt.Println(f1,f2,f3)
}
原文链接:https://www.f2er.com/go/190746.html