Go语言接口的嵌套如何使用


这篇文章主要讲解了“Go语言接口的嵌套如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Go语言接口的嵌套如何使用”吧!在Go语言中,不仅结构体与结构体之间可以嵌套,接口与接口间也可以通过嵌套创造出新的接口。一个接口可以包含一个或多个其他的接口,这相当于直接将这些内嵌接口的方法列举在外层接口中一样。只要接口的所有方法被实现,则这个接口中的所有嵌套接口的方法均可以被调用。Go语言的 io 包中定义了写入器(Writer)、关闭器(Closer)和写入关闭器(WriteCloser)3 个接口,代码如下:代码说明如下:第 1 行定义了写入器(Writer),如这个接口较为常用,常用于 I/O 设备的数据写入。第 5 行定义了关闭器(Closer),如有非托管内存资源的对象,需要用关闭的方法来实现资源释放。第 9 行定义了写入关闭器(WriteCloser),这个接口由 Writer 和 Closer 两个接口嵌入。也就是说,WriteCloser 同时拥有了 Writer 和 Closer 的特性。在代码中使用 io.Writer、io.Closer 和 io.WriteCloser 这 3 个接口时,只需要按照接口实现的规则实现 io.Writer 接口和 io.Closer 接口即可。而 io.WriteCloser 接口在使用时,编译器会根据接口的实现者确认它们是否同时实现了 io.Writer 和 io.Closer 接口,详细实现代码如下:代码说明如下:第 8 行定义了 device 结构体,用来模拟一个虚拟设备,这个结构会实现前面提到的 3 种接口。第 12 行,实现了 io.Writer 的 Write() 方法。第 17 行,实现了 io.Closer 的 Close() 方法。第 24 行,对 device 实例化,由于 device 实现了 io.WriteCloser 的所有嵌入接口,因此 device 指针就会被隐式转换为 io.WriteCloser 接口。第 27 行,调用了 wc(io.WriteCloser接口)的 Write() 方法,由于 wc 被赋值 *device,因此最终会调用 device 的 Write() 方法。第 30 行,与 27 行类似,最终调用 device 的 Close() 方法。第 33 行,再次创建一个 device 的实例,writeOnly 是一个 io.Writer 接口,这个接口只有 Writ免费云主机域名e() 方法。第 36 行,writeOnly 只能调用 Write() 方法,没有 Close() 方法。为了整理思路,将上面的实现、调用关系使用图方式来展现,参见图 1 和图 2。1) io.WriteCloser的实现及调用过程如图 1 所示。图1:io.WriteCloser 的实现及调用过程2) io.Writer 的实现调用过程如图 2 所示。图2:io.Write 的实现及调用过程给 io.WriteCloser 或 io.Writer 更换不同的实现者,可以动态地切换实现代码。感谢各位的阅读,以上就是“Go语言接口的嵌套如何使用”的内容了,经过本文的学习后,相信大家对Go语言接口的嵌套如何使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是百云主机,小编将为大家推送更多相关知识点的文章,欢迎关注!

相关推荐: 有哪些实用的数据科学Python库

这篇文章主要介绍了有哪些实用的数据科学Python库的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇有哪些实用的数据科学Python库文章都会有所收获,下面我们一起来看看吧。 从网络上提取数据是数据科学家的重要任务之一。Wget 是…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 07/01 17:36
下一篇 07/01 17:36

相关推荐