golang 怎么理解 struct 和 interface ?

lobo · · 2270 次点击
struct 封装 interface 多态
#1
更多评论
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
我的理解: 1、struct是具体的类型,而interface是一个“虚”(抽象)类型 2、struct嵌套后他也就拥有了被嵌套的类型所实现的接口,这个就像是OOP里的继承 3、struct是一堆具体类型,也可以有抽象类型也就是接口类型的集合,而接口只能是一堆方法的集合 最后:struct 和 interface的组合使GO变得超级强大!!!
#3