加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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)
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读