golang学习的点点滴滴:接口复制和接口查询
发布时间:2020-12-16 18:49:12 所属栏目:大数据 来源:网络整理
导读:packagemainimport"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
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) } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |