哪位大牛通俗易懂的讲解一下struct 和 interface?
在go语言中的角色?
用好它们的原则或案例?
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
struct 封装 interface 多态
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接口
我的理解: 1、struct是具体的类型,而interface是一个“虚”(抽象)类型 2、struct嵌套后他也就拥有了被嵌套的类型所实现的接口,这个就像是OOP里的继承 3、struct是一堆具体类型,也可以有抽象类型也就是接口类型的集合,而接口只能是一堆方法的集合
最后:struct 和 interface的组合使GO变得超级强大!!!
个人理解,struct就一种数据结构,当基本数据类型不能满足我们的需求时,可以通过定义struct来创建新的具体数据类型;而要理解interface需要知道两件事:1.它是一系列方法的集合,2.它也是一种数据类型。当某个数据类型实现了interface所包含的方法集合,interface变量也可以表示这个数据类型。
`单行代码`
struct 封装 interface 多态
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接口
我的理解: 1、struct是具体的类型,而interface是一个“虚”(抽象)类型 2、struct嵌套后他也就拥有了被嵌套的类型所实现的接口,这个就像是OOP里的继承 3、struct是一堆具体类型,也可以有抽象类型也就是接口类型的集合,而接口只能是一堆方法的集合
最后:struct 和 interface的组合使GO变得超级强大!!!
个人理解,struct就一种数据结构,当基本数据类型不能满足我们的需求时,可以通过定义struct来创建新的具体数据类型;而要理解interface需要知道两件事:1.它是一系列方法的集合,2.它也是一种数据类型。当某个数据类型实现了interface所包含的方法集合,interface变量也可以表示这个数据类型。