Jquery中文网 www.jquerycn.cn
Jquery中文网 >  后端编程  >  Go语言  >  正文 go语言学习笔记 — 接口 — 接口的嵌套组合:把多个接口放到一个接口内

go语言学习笔记 — 接口 — 接口的嵌套组合:把多个接口放到一个接口内

发布时间:2021-04-21   编辑:www.jquerycn.cn
jquery中文网为您提供go语言学习笔记 — 接口 — 接口的嵌套组合:把多个接口放到一个接口内等资源,欢迎您收藏本站,我们将为您提供最新的go语言学习笔记 — 接口 — 接口的嵌套组合:把多个接口放到一个接口内资源

在go中,结构体可以内嵌,创建出新的结构体;同理,接口也可以内嵌,创建出新的接口。接口与接口嵌套组合生成新接口,只要接口的所有方法都被实现,则这个接口中的所有嵌套接口均可被调用。


系统包中的接口嵌套组合

io包定义了写入器(Writer)、关闭器(Closer)和写入关闭器(WriteCloser)3个接口,代码如下:

// 写入接口
type Writer interface {
    Write(p []byte) 
}

// 关闭接口,实现内存资源的释放
type Closer interface {
    Close()  error 
}

// 写入关闭接口,同时拥有Writer和Closer的特性
type WriteCloser interface {
    Writer         // 由两个接口嵌套组合,生成扩展接口
    Closer
}

在应用代码中使用接口嵌套组合

package main

import (
	"io"
	"testing"
)

// // io包中的写入接口
// type Writer interface {
// 	Write(p []byte)
// }

// // io包中的关闭接口,实现内存资源的释放
// type Closer interface {
// 	Close() error
// }

// // io包中的写入关闭接口,同时拥有Writer和Closer的特性
// type WriteCloser interface {
// 	Writer // 由两个接口嵌套组合,生成扩展接口
// 	Closer
// }

// 声明一个设备结构体,用于模拟一个虚拟设备
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结构体实例化wc,由于device类型已经实现了io.WriteCloser的所有内嵌接口,因此wc的类型可以看作是io.WriteCloser接口类型(被隐式转换了)
	var wc io.WriteCloser = new(device)

	// wc实例调用Write方法,写入数据
	wc.Write(nil)

	// wc实例调用Close方法,关闭设备
	wc.Close()

	// 声明写入器writeOnly,类型是io.Writer,并赋值device新实例
	var writeOnly io.Writer = new(device)

	// writeOnly实例只调用Write方法,写入数据
	writeOnly.Write(nil)
}

给io.WriterCloser和io.Writer更换不同的实现者(结构体方法),可以动态地切换实现代码。

到此这篇关于“go语言学习笔记 — 接口 — 接口的嵌套组合:把多个接口放到一个接口内”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
go语言学习笔记 — 接口 — 接口的嵌套组合:把多个接口放到一个接口内
go 获取函数地址_Go语言基础--接口浅析
Go 语言到底适合干什么?
想系统学习GO语言(Golang
2020-10-18Go语言接口
第07章 Go语言接口(interface),Golang接口(interface)
Go语言接口interface
MySQL中group_concat函数使用例子
基于类型系统的面向对象编程语言Go
asp.net常用http状态码表

[关闭]