Lv.的博客

Go语言中接口组合的实现方法

在Go语言中,可以在接口A中组合其它的一个或多个接口(如接口B、C),这种方式等价于在接口A中添加接口B、C中声明的方法。

 

代码如下:
//接口中可以组合其它接口,这种方式等效于在接口中添加其它接口的方法  
type Reader interface {  
    read()  
}  
type Writer interface {  
    write()  
}  
  
//定义上述两个接口的实现类  
type MyReadWrite struct{}  
  
func (mrw *MyReadWrite) read() {  
    fmt.Println("MyReadWrite...read")  
}  
  
func (mrw *MyReadWrite) write() {  
    fmt.Println("MyReadWrite...write")  
}  
  
//定义一个接口,组合了上述两个接口  
type ReadWriter interface {  
    Reader  
    Writer  
}  
  
//上述接口等价于:  
type ReadWriterV2 interface {  
    read()  
    write()  
}  
  
//ReadWriter和ReadWriterV2两个接口是等效的,因此可以相互赋值  
func interfaceTest0104() {  
    mrw := &MyReadWrite{}  
    //mrw对象实现了read()方法和write()方法,因此可以赋值给ReadWriter和ReadWriterV2  
    var rw1 ReadWriter = mrw  
    rw1.read()  
    rw1.write()  
  
    fmt.Println("------")  
    var rw2 ReadWriterV2 = mrw  
    rw2.read()  
    rw2.write()  
  
    //同时,ReadWriter和ReadWriterV2两个接口对象可以相互赋值  
    rw1 = rw2  
    rw2 = rw1  
}
posted @   Avatarx  阅读(906)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
历史上的今天:
2015-03-16 DIV 与 Table 嵌套
2015-03-16 Div与table的区别
2015-03-16 js jsp 时间 日期 控件 插件 简单 实用
点击右上角即可分享
微信分享提示