Go中为什么需要求接口?

ThanksSirAlex · 2019-09-29 11:37:03 · 1240 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2019-09-29 11:37:03 的主题,其中的信息可能已经有所发展或是发生改变。

既然使用接口需要每个结构都要实现接口里面的方法,为什么还需要接口


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

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

1240 次点击  ∙  1 赞  
加入收藏 微博
5 回复  |  直到 2019-09-30 15:27:13
focusonline
focusonline · #1 · 6年之前

我个人感觉接口在golang中是一个相当重要和创新的设计, 接口是一个万能类型, 可以是任何数据的载体, 楼主提到的接口中的方法必须被struct实现才算实现了接口这正是接口的奇妙之处, 比如error是一个接口, 你只要实现了Error函数返回一个字符串就行, 这就为你自己定义业务错误和系统错误混合使用打好了基础. 你的函数返回的只是一个error, 但是这个error可以是系统错误也可以是你的业务错误, 取决于这个interface{}实际的类型是什么. 这就是interface{}的魅力. 你可以根据实际的错误类型做出不同的错误处理. golang发展到现在我觉得如果能尽快实现对泛型的支持那真的是一个很令人欣喜的进步了, 期盼2.0早点到来实现泛型.

jdxj
jdxj · #2 · 6年之前

接口像是协议.

sdghchj
sdghchj · #3 · 6年之前

在强类型语言里,接口是一种标准,制定了一系列规范。标准,好好理解一下。

jan-bar
jan-bar · #4 · 5年之前

又不是只有go特有的。写几段代码就理解了。

stirlingx
stirlingx · #5 · 5年之前

面向对象设计原则里面有一条: 依赖倒置原则

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