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中包含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)}总结
以上是内存溢出为你收集整理的golang学习的点点滴滴:接口复制和接口查询全部内容,希望文章能够帮你解决golang学习的点点滴滴:接口复制和接口查询所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)