Go语言中接口组合(接口中包含接口)

来源:互联网 发布:php yii 编辑:程序博客网 时间:2024/04/25 15:39

在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 {ReaderWriter}//上述接口等价于:type ReadWriterV2 interface {read()write()}//ReadWriter和ReadWriterV2两个接口是等效的,因此可以相互赋值func interfaceTest0104() {mrw := &MyReadWrite{}//mrw对象实现了read()方法和write()方法,因此可以赋值给ReadWriter和ReadWriterV2var rw1 ReadWriter = mrwrw1.read()rw1.write()fmt.Println("------")var rw2 ReadWriterV2 = mrwrw2.read()rw2.write()//同时,ReadWriter和ReadWriterV2两个接口对象可以相互赋值rw1 = rw2rw2 = rw1}


0 0
原创粉丝点击