Go语言实现多个接口

Go语言实现多个接口教程

Go 语言 中,接口类型 之间是多对多的关系,即一个类型可以实现多个接口,同时,一个接口也可以被多个类型所实现。

案例

一个类型实现多个接口

在 Golang 中,一个类型可以实现多个接口

package main import ( "fmt" ) // 在 Golang 中,一个类型可以实现多个接口 type MyWriter interface { MyWriter(note string) } type MyCloser interface { MyCloser() } type WriterCloser struct { } func (wc WriterCloser)MyWriter(note string){ fmt.Println("Call WriterCloser MyWriter, Note =", note) } func (wc WriterCloser)MyCloser(){ fmt.Println("Call WriterCloser MyCloser") } func main() { fmt.Println("嗨客网(www.haicoder.net)") var writerCloser WriterCloser writerCloser.MyWriter("Hello Golang") writerCloser.MyCloser() }

程序运行后,控制台输出如下:

04_golang接口实现.png

首先,我们定义了一个 MyWriter 接口,该接口有一个方法 MyWriter ,MyWriter 方法接受一个 string 类型的 参数。接着,我们定义了一个 MyCloser 接口,该接口有一个方法 MyCloser。

接着,我们定义了一个 结构体 WriterCloser,该结构体实现了方法 MyWriter 并且签名跟 MyWriter 接口中的一样,同时实现了方法 MyCloser,该方法同结构体 MyCloser 中的 MyCloser 签名一样。

因为,结构体 WriterCloser 实现了接口 MyWriter 和接口 MyCloser 中的所有方法,即 WriterCloser 同时实现了接口 MyWriter 和接口 MyCloser。

一个接口被多个类型实现

在 Golang 中,一个接口也可以被多个类型实现

package main import ( "fmt" ) // 在 Golang 中,一个接口也可以被多个类型实现 type MyWriter interface { MyWriter(note string) } type SocketWriter struct { } type FileWriter struct { } func (s SocketWriter)MyWriter(note string){ fmt.Println("Call SocketWriter MyWriter, Note =", note) } func (s FileWriter)MyWriter(note string){ fmt.Println("Call FileWriter MyWriter, Note =", note) } func main() { fmt.Println("嗨客网(www.haicoder.net)") var socketWriter SocketWriter var fileWriter FileWriter socketWriter.MyWriter("Hello Golang") fileWriter.MyWriter("Hello Python") }

程序运行后,控制台输出如下:

05_golang接口实现.png

首先,我们定义了一个 MyWriter 接口,该接口有一个方法 MyWriter ,MyWriter 方法接受一个 string 类型的参数。

接着,我们定义了一个结构体 SocketWriter 和一个结构体 FileWriter,SockerWriter 结构体和 FileWriter 结构体都实现了方法 MyWriter,且方法签名跟 MyWriter 里的 MyWriter 签名一致。

因此,结构体 SocketWriter 和结构体 FileWriter 都实现了接口 MyWriter。

Golang实现多个接口总结

在 Go 语言中,接口和类型之间是多对多的关系,即一个类型可以实现多个接口,同时,一个接口也可以被多个类型所实现。