golang 怎么理解 struct 和 interface ?

lobo · 2018-04-18 19:43:45 · 2414 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2018-04-18 19:43:45 的主题,其中的信息可能已经有所发展或是发生改变。

哪位大牛通俗易懂的讲解一下struct 和 interface?

在go语言中的角色?

用好它们的原则或案例?


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2414 次点击  
加入收藏 微博
4 回复  |  直到 2018-04-20 17:23:15
a631069724
a631069724 · #1 · 7年之前

struct 封装 interface 多态

lobo
lobo · #2 · 7年之前

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接口

hwp195
hwp195 · #3 · 7年之前

我的理解: 1、struct是具体的类型,而interface是一个“虚”(抽象)类型 2、struct嵌套后他也就拥有了被嵌套的类型所实现的接口,这个就像是OOP里的继承 3、struct是一堆具体类型,也可以有抽象类型也就是接口类型的集合,而接口只能是一堆方法的集合

最后:struct 和 interface的组合使GO变得超级强大!!!

subond
subond · #4 · 7年之前

个人理解,struct就一种数据结构,当基本数据类型不能满足我们的需求时,可以通过定义struct来创建新的具体数据类型;而要理解interface需要知道两件事:1.它是一系列方法的集合,2.它也是一种数据类型。当某个数据类型实现了interface所包含的方法集合,interface变量也可以表示这个数据类型。

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传