Go从入门到精通——接口(interface)——接口的嵌套组合——将多个接口放在一个接口内
接口的嵌套组合——将多个接口放在一个接口内
在 Go 语言中,不仅结构体与结构体之间可以嵌套,接口与接口之间也可以通过嵌套创造出新的接口。
接口与接口嵌套组合而成了新接口,只要接口的所有方法被实现,则这个接口中的所有嵌套接口的方法均可以被调用。
1、系统包中的接口嵌套组合
Go 语言中的 io 包中定义了写入器(Writer)、关闭器(Closer)和写入关闭器(WriteCloser)3个接口,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 | type Writer interface { write(p []byte) (n int, err error) } type Closer interface { Close() error } type WriteCloser interface { Writer Closer } |
2、在代码中使用皆苦嵌套组合
在代码中使用 io.Writer、io.Closer 和 io.WriteCloser 这 3 个接口时,只需要按照接口实现的规则实现 io.Writer 接口和 io.Closer 接口即可。
io.WriteCloser 接口在使用时,编译器会根据接口的实现者确认它们是否同时实现了 io.Writer 和 io.Closer 接口,详细代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | package main import "io" //声明一个设备结构 type device struct {} //实现 io.Writer 的 Write() 方法 func (d *device) Write(p []byte) (n int, err error) { return 0, nil } //实现 io.Closer 的 Close() 方法 func (d *device) Close() error { return nil } func main() { //声明写入关闭器,并赋予 device 的实例 var wc io.WriteCloser = new(device) //写入器 wc.Write(nil) //关闭设备 wc.Close() //声明写入器,并赋予 device 的新实例 var writeOnly io.Writer = new(device) //写入数据 writeOnly.Write(nil) } |
分类:
Go专题精讲
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具