参考:
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 等。
- Go语言的接口在
-
方法名:当方法名首字母是大写时,且这个接口类型名首字母也是大写时,这个方法可以被接口所在的包(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语言希望通过一个接口精准
描述它自己
的功能,而通过多个接口的嵌入
和组合
的方式将简单
的接口扩展
为复杂
的接口。
网友评论