哪位大牛通俗易懂的讲解一下struct 和 interface?
在go语言中的角色?
用好它们的原则或案例?
个人理解,struct就一种数据结构,当基本数据类型不能满足我们的需求时,可以通过定义struct来创建新的具体数据类型;而要理解interface需要知道两件事:1.它是一系列方法的集合,2.它也是一种数据类型。当某个数据类型实现了interface所包含的方法集合,interface变量也可以表示这个数据类型。
#4
更多评论
struct是一个结构体,当普通的变量无法满足描述所需的东西,就会用结构体来描述,例子就是你无法用一个int或者float,或者其他基本类型,来描述一个公司,一个company,包含了多个apartment,多种人员officer,薪酬体系 salarymode,等等
interface是描述一款功能的一种规范,所以他规范的全是动词动作,比如每一款连接器,如果没有接口,就是各自的结构体,
比如USB,HIMI,音频线,结构体,然后有一个厂商发出号召,所有连接器结构体,必须实现Connect()方法,必须实现DisConnect方法,不然就不符合标准规格的连接器规范,那么这样的interface就可以描述成:
type ConnectorI interface{
Connect()
Disconnect()
}
对一个结构体,如何才算满足了该接口规范,如果有
type USB struct{
}
func(usb USB) Connect(){
}
func (usb USB) Disconnect(){
}
则USB实现了ConnectorI接口
#2