NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
### 概述 在go语言中,接口(interface)是一个自定义类型,接口类型具体描述了一系列方法的集合. 接口类型是一种抽 象的类型,它不会暴露它所代表的对象的内部值的结构和这个对象支持的基础操作的集合,它们只会展示出 它们自己的方法. 因此接口类型不能将其实例化. go通过接口实现了鸭子类型(duck-typing) : "当看到一只鸟走起来像鸭子,有用起来像鸭子,叫起来也像鸭 子,那么这只鸟就可以被称为鸭子了" . 我们并不关心对象是什么类型,到底是不是鸭子,只关心行为. ### 接口定义 ~~~ type Humaner interface { SayHi() } ~~~ * 接口命名习惯以er结尾 * 接口只有方法声明,没有实现,没有数据字段 * 接口可以匿名嵌入其他接口,或者嵌入到结构中 ### 接口实现 接口是用来定义行为的类型.这些被定义的行为不由接口直接实现,而是由用户定义的类型实现,一个实现 了这些方法的具体类型是这个接口类型的实例. 如果用户定义的类型实现了某个接口类型声明的一组方法,那么这个用户定义的类型的值就可以赋给这个 接口类型的值.这个赋值会把用户定义的类型的值存入接口类型的值. ### 什么是面向接口 接口是协议,方法是实现。接口是虚的,方法是实的。接口是为了通信需要,方法是实现需要。接口是 抽象的,方法是具体的。接口有隔离作用,方法是高耦合。接口是插头插座,方法是胶布扭线。在大型 软件工程中,为了实现高内聚低耦合高复用,防止出现面条式程序相互干扰,用接口隔离开实现,更容 易划分模块和多人开发,有了接口很容易实现各种设计模式,接口就像电线的插座一样,只要接口不变 很容易连通各种东西,减少了开发量,提高了通用性。没有通用性需求时,不要滥用接口,接口会增加 程序的复杂度和性能成本。