答疑解惑请问接口的用途比函数好在哪?

go2love · 2022-10-03 23:49:49 · 3446 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2022-10-03 23:49:49 的主题,其中的信息可能已经有所发展或是发生改变。

小白一枚,平时用函数比较多,写习惯了,感觉很多事都能搞定,可能是自己接触的需求都太low了。 没用过接口,请问在实际项目中函数和接口的优劣是啥?哪些方面接口比函数好?好在哪? 感谢各位大牛指导!


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

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

3446 次点击  
加入收藏 微博
9 回复  |  直到 2023-03-08 16:50:24
Dongo
Dongo · #1 · 2年之前

面向接口,低耦合,易扩展吧

sanrentai
sanrentai · #2 · 2年之前

实现相同功能的不同实现,就用接口,比如源码中的 hash.Hash,有多种实现,md5.New() 和 sha1.New() 等。如果用函数的话,可能就需要实现很多不同名称的函数。 在使用时,仅需要传入不同接口,即可实现不同hash算法。而且接口可以自己进行扩展。 函数也能实现这些功能,但要取不同的函数名。

go2love
go2love · #3 · 2年之前
DongoDongo #1 回复

面向接口,低耦合,易扩展吧

感谢感谢

go2love
go2love · #4 · 2年之前
sanrentaisanrentai #2 回复

实现相同功能的不同实现,就用接口,比如源码中的 hash.Hash,有多种实现,md5.New() 和 sha1.New() 等。如果用函数的话,可能就需要实现很多不同名称的函数。 在使用时,仅需要传入不同接口,即可实现不同hash算法。而且接口可以自己进行扩展。 函数也能实现这些功能,但要取不同的函数名。

借口的话是不是也要实际写不同的方法才行?

EddyLee1010
EddyLee1010 · #5 · 2年之前

我也不懂道理。但就是用。显得我不是菜鸟

go2love
go2love · #6 · 2年之前
EddyLee1010EddyLee1010 #5 回复

我也不懂道理。但就是用。显得我不是菜鸟

可以可以,我也用,bug可以多,逼格一定要高。哈哈

Neightly
Neightly · #7 · 2年之前

抛开所谓的低耦合的八股文,Go里面使用接口还有另外一个用途:避免循环依赖。 试想package x需要package y的类型,y同时需要x的功能,那么就循环依赖了。 如果x使用接口,y来提供实现,那么就不存在循环依赖了。

Bright942
Bright942 · #8 · 2年之前

11

go2love
go2love · #9 · 2年之前
NeightlyNeightly #7 回复

抛开所谓的低耦合的八股文,Go里面使用接口还有另外一个用途:避免循环依赖。 试想package x需要package y的类型,y同时需要x的功能,那么就循环依赖了。 如果x使用接口,y来提供实现,那么就不存在循环依赖了。

收到,感谢Neightly大佬指导。

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