哪位大牛通俗易懂的讲解一下struct 和 interface?
在go语言中的角色?
用好它们的原则或案例?
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