ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Go从入门到精通——接口(interface)——接口的嵌套组合——将多个接口放在一个接口内

2022-06-04 20:00:24  阅读:171  来源: 互联网

标签:Closer 嵌套 Writer 接口 Go device io interface


接口的嵌套组合——将多个接口放在一个接口内

  在 Go 语言中,不仅结构体与结构体之间可以嵌套,接口与接口之间也可以通过嵌套创造出新的接口。

  接口与接口嵌套组合而成了新接口,只要接口的所有方法被实现,则这个接口中的所有嵌套接口的方法均可以被调用。

1、系统包中的接口嵌套组合

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

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 接口,详细代码如下:

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)
}

标签:Closer,嵌套,Writer,接口,Go,device,io,interface
来源: https://www.cnblogs.com/zuoyang/p/16342407.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有