小白一枚,平时用函数比较多,写习惯了,感觉很多事都能搞定,可能是自己接触的需求都太low了。
没用过接口,请问在实际项目中函数和接口的优劣是啥?哪些方面接口比函数好?好在哪?
感谢各位大牛指导!
抛开所谓的低耦合的八股文,Go里面使用接口还有另外一个用途:避免循环依赖。
试想package x需要package y的类型,y同时需要x的功能,那么就循环依赖了。
如果x使用接口,y来提供实现,那么就不存在循环依赖了。
#7
更多评论
实现相同功能的不同实现,就用接口,比如源码中的 hash.Hash,有多种实现,md5.New() 和 sha1.New() 等。如果用函数的话,可能就需要实现很多不同名称的函数。
在使用时,仅需要传入不同接口,即可实现不同hash算法。而且接口可以自己进行扩展。
函数也能实现这些功能,但要取不同的函数名。
#2