zhcn 编程语言 Golang Golang 函数 非公開: Go语言接口声明(定义)

Go语言接口声明(定义)

Go 语言不是“传统”的面向对象编程语言。没有类或继承的概念。

然而,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语言希望通过接口来精确地描述其功能,并通过嵌入和组合多个接口将简单的接口扩展到复杂的接口。本章后面的部分将解释如何使用组合来扩展接口。

通俗易懂的《Go语言接口声明(定义)》讲解!您必须观看的 2 个最佳视频

一緒に学ぶGo言語入門 ~その9:メソッドとインターフェース(前編)~
https://www.youtube.com/watch?v=ntLdZ_qyqTM&pp=ygU5IEdv6KiA6Kqe44Kk44Oz44K_44O844OV44Kn44O844K55a6j6KiA77yI5a6a576p77yJJmhsPUpB
はじめてのGolang Part2 Webフレームワーク Gin 前編
https://www.youtube.com/watch?v=CXIC3-mUzzc&pp=ygU5IEdv6KiA6Kqe44Kk44Oz44K_44O844OV44Kn44O844K55a6j6KiA77yI5a6a576p77yJJmhsPUpB
Go 语言不是“传统”的面向对象编程语言。没有类或继承的概念。

然而,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语言希望通过接口来精确地描述其功能,并通过嵌入和组合多个接口将简单的接口扩展到复杂的接口。本章后面的部分将解释如何使用组合来扩展接口。

通俗易懂的《Go语言接口声明(定义)》讲解!您必须观看的 2 个最佳视频

一緒に学ぶGo言語入門 ~その9:メソッドとインターフェース(前編)~
https://www.youtube.com/watch?v=ntLdZ_qyqTM&pp=ygU5IEdv6KiA6Kqe44Kk44Oz44K_44O844OV44Kn44O844K55a6j6KiA77yI5a6a576p77yJJmhsPUpB
はじめてのGolang Part2 Webフレームワーク Gin 前編
https://www.youtube.com/watch?v=CXIC3-mUzzc&pp=ygU5IEdv6KiA6Kqe44Kk44Oz44K_44O844OV44Kn44O844K55a6j6KiA77yI5a6a576p77yJJmhsPUpB