Go语言接口声明(定义)

参考:
http://c.biancheng.net/view/77.html

关键点:

通过关键词汇,实现快速理解,记忆目的

1、Go语言是一种传统面向对象编程语言,它里面没有继承的概念

2、Go语言中,接口类型会和特定的实现细节绑定在一起,这种抽象方式使得函数更加灵活和更加具有适应能力

3、接口是一种类型,也是一种抽象结构,不会暴露所含数据的格式类型以及结构

4、接口是用来什么的?

接口是用来对外的,实现 生产者调用者的分离,解耦;

如果是这个目的,就可以创建设计接口

5、接口设计原则

接口里的方法 建议 太多,能够达到准确描述自己的功能,即可。

提倡,通过简单接口之间的嵌套 或者 组合 从而 实现 复杂的接口

1、接口声明的格式

每个接口类型由数个方法组成。接口的形式代码如下:

type 接口类型名 interface{
    方法名1( 参数列表1 ) 返回值列表1
    方法名2( 参数列表2 ) 返回值列表2
    …
}

对各个部分的说明:

  • 接口类型名:使用 type 将接口定义为自定义的类型名。

    • Go语言的接口在命名时,一般会在单词后面添加 er,如有写操作的接口叫 Writer,有字符串功能的接口叫 Stringer,有关闭功能的接口叫 Closer 等。
  • 方法名:当方法名首字母是大写时,且这个接口类型名首字母也是大写时,这个方法可以被接口所在的包(package)之外的代码访问。

  • 参数列表、返回值列表:参数列表和返回值列表中的参数变量名可以被忽略,例如:

type writer interface{
    Write([]byte) error
}

2、开发中常见的接口及写法

Go语言提供的很多包中都有接口,例如 io 包中提供的 Writer 接口:

type Writer interface {
    Write(p []byte) (n int, err error)
}

这个接口可以调用 Write() 方法写入一个字节数组([]byte),返回值告知写入字节数(n int)和可能发生的错误(err error)。

类似的,还有将一个对象以字符串形式展现的接口,只要实现了这个接口的类型,在调用 String() 方法时,都可以获得对象对应的字符串。在 fmt 包中定义如下:

type Stringer interface {
    String() string
}

Stringer 接口在Go语言中的使用频率非常高,功能类似于 Java 或者 C# 语言里的 ToString 的操作。

Go语言的每个接口中的方法数量不会很多。

Go语言希望通过一个接口精准描述它自己的功能,而通过多个接口的嵌入组合的方式将简单的接口扩展复杂的接口。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容