首页IT科技go语言接口内部实现什么(Go接口嵌套的使用)

go语言接口内部实现什么(Go接口嵌套的使用)

时间2025-06-14 00:06:57分类IT科技浏览4331
导读:原文链接:https://www.zhoubotong.site/post...

原文链接:https://www.zhoubotong.site/post

/86.html

这里介绍下接口interface嵌套的用法            ,大家知道Go语言中不仅仅结构体与结构体之间可以嵌套                  ,接口与接口之间也可以嵌套      ,通过接口的嵌套我们可以定义出新的接口            。

Golang 的接口嵌套      ,其实也就是一个接口里面包含一个或多个其他的接口                  ,被包含的接口的所有方法都会被包含到新的接口中                  。

只有实现接口中所有的方法            ,包括被包含的接口的方法      ,才算是实现了接口      。

Go语言接口嵌套

语法

type Interface1 interface{ func1() } type Interface2 interface{ func2() } type Interface interface{ Interface1 Interface2 func() }

说明

上面我们定义了一个接口 Interface1 和一个接口 Interface2                  ,接口 Interface1 里面由一个方法 func1            ,接口 Interface12 里面有一个函数 func2            。

接着我们定义了接口 Interface,接口 Interface 里面包含了接口 Interface1 和接口 Interface2                  ,同时包含了方法 func                  。

此时接口 Interface 相当于包含了方法 func1            、func2 和 func                  ,所以我们必须实现 func1                  、func2 和 func 这三个方法才算实现了接口 Interface      。

例子

接口嵌套

必须实现嵌套的接口的所有方法,才算实现接口

package main import ( "fmt" ) type Studenter struct { // 该Studenter结构体用来演示 如何实现接口的所有的方法 } type Reader interface { ReaderFunc() } type Writer interface { WriterFunc(str string) } type ReadAndWriter interface { // 嵌套结构体 Reader Writer } func (s Studenter) ReaderFunc() { fmt.Println("调用ReaderFunc") } func (s Studenter) WriterFunc(str string) { fmt.Println("调用 WriterFunc Str =", str) } func main() { fmt.Println("草堂笔记(www.zhoubotong.site)") // 必须实现嵌套的接口的所有方法            ,才算实现接口 var s interface{} // 定义接口类型变量s var student Studenter // 定义 Studenter 结构体类型的变量 student s = student // 将 Studenter 赋值给了变量 s student.ReaderFunc() // 调用ReaderFunc方法 student.WriterFunc("这里是一段写函数") // 调用WriterFunc方法 // 下面使用 接口类型断言                  ,分别判断变量 s 是否是接口 Reader       、Writer 和 ReadAndWriter 类型 if reader, Ok := s.(Reader); Ok { // s 转换成Reader 接口 fmt.Println("Studenter is type of Reader, Reader =", reader) } if writer, Ok := s.(Writer); Ok { // s 转换成Writer 接口 fmt.Println("Studenter is type of Reader, Writer =", writer) } if readAndWriter, Ok := s.(ReadAndWriter); Ok { fmt.Println("Studenter is type of Reader, ReadWriter =", readAndWriter) } }

输出:

草堂笔记(www.zhoubotong.site) 调用ReaderFunc 调用 WriterFunc Str = 这里是一段写函数 Studenter is type of Reader, Reader = {} Studenter is type of Reader, Writer = {} Studenter is type of Reader, ReadWriter = {}

上面student同时实现了接口中的Reader和Writer方法      ,我们发现变量 s 同时是 Reader             、Writer 和 ReadAndWriter 类型            ,即结构体 Studenter 同时实现了以上三个接口,

其实这个例子就是用一个struct实现一个嵌套接口的方法      。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
论文阅读笔记收获怎么写(论文阅读笔记:ShuffleNet) iptime路由器怎么恢复出厂设置(IPCOM 无线路由器如何恢复出厂设置)