然而,Go语言有一个非常灵活的接口概念,通过它可以实现许多面向对象的功能。虽然很多面向对象的语言都有类似的接口概念,但是Go的接口类型的独特之处在于它们满足隐式实现。这意味着不必为特定的具体类型定义所有令人满意的接口类型;提供一些必要的方法就足够了。
这种设计允许您创建满足现有具体类型的新接口类型,而无需更改其定义。当使用非托管包中的类型时,此设计特别有用。
接口类型是其他类型行为的抽象和概括。由于接口类型不绑定到具体的实现细节,这种抽象使得函数更加灵活和适应性更强。
接口是双方同意的合作协议。接口的实现者不需要关心接口是如何使用的,调用者也不需要关心接口的实现细节。接口是类型和抽象结构,不公开它们所包含的数据的格式、类型或结构。
接口声明格式
每个接口类型都包含多个方法。接口的表单代码为:
type interfaceName interface{
メソッド名1( パラメータリスト1 ) 戻り値リスト1
メソッド名2( パラメータリスト2 ) 戻り値リスト2
...
} 各部分说明:
- 接口类型名称:使用type将接口定义为自定义类型名称。在Go语言中命名接口时,通常将具有写操作的接口称为Writer,具有字符串函数的接口称为Stringers,具有关闭函数的接口称为Closer,等等。
- 方法名:如果方法名的首字母大写,并且接口类型名的首字母也大写,则可以从接口所在包外的代码访问该方法。
- 参数列表、返回值列表:参数列表和返回值列表中的参数变量名可以忽略。例如:
タイプライターインタフェースは次のように定義されます:
type writer interface{
Write([]byte) error
} 正在开发的常用接口及描述方法
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语言希望通过接口来精确地描述其功能,并通过嵌入和组合多个接口将简单的接口扩展到复杂的接口。本章后面的部分将解释如何使用组合来扩展接口。




![2021 年如何设置 Raspberry Pi Web 服务器 [指南]](https://i0.wp.com/pcmanabu.com/wp-content/uploads/2019/10/web-server-02-309x198.png?w=1200&resize=1200,0&ssl=1)

