golang学习的点点滴滴:接口复制和接口查询

前端之家收集整理的这篇文章主要介绍了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

猜你在找的Go相关文章