Golang 接口概念(十五)|Go主题月

777 阅读2分钟

简介

Golang interface(接口)是一种抽象的类型,只定义对象的行为规范但不具体实现,具体的规范细节由对象来实现。

使用接口的好处

由于 Golang 中并没有明确的面向对象编程思想,所以 Golang 也没有面向对象类和继承概念。 值得庆幸的是:Golang “十分灵活” 语言特性,使得习惯面向对象编程的我们,依然能实现面向对象的特性:封装继承多态

使用接口概念的好处在于——它分离 方法具体代码实现逻辑,让函数更具有适应性。

这么一说你肯定很抽象,但举个数据操作的例子你就立刻明白了。

如今数据库有很多种: MySQLPostgreSQLSQL Server,每一种数据库都有自己具体的数据库连接、操作方法

伪代码实现: zenified-code (1).jpg

上面的代码定义了MysqlPostgreSQL,然后它们都需要连接数据库。于是你会发现 main()中有重复的代码。

如果后续再加上SQL ServerOracle等数据库,上面的代码量还会一直增加下去。 这里我们就能把他们抽象数据库,都需要 连接数据库CURD(增删改查) 操作。 让开发者无需考虑数据库差异,差异都隐藏在接口背后的具体对象中。

Golang 为了解决类似问题,于是设计了接口概念。

这也是 适配器模式 这一程序设计模式的思想,接口是对同一类对象行为的抽象概括接口不会和特定实现细节绑定在一起,通过这种抽象的方式让我们完成统一的操作。

总结而言:

  • 接口是 同一类 对象的约定协议。 同一类对象编写自己不同的实现操作细节实现接口约定好的方法
  • 实现对象不用关心接口会被怎样使用,调用接口也不用关心接口的实现细节。
  • Golang 的接口是一种类型抽象结构,不含具体结构数据格式以及类型