当前位置:首页 > 科技  > 软件

Golang 中的 io 包详解:组合接口

来源: 责编: 时间:2023-08-05 11:44:45 3359观看
导读io.ReadWriter// ReadWriter is the interface that groups the basic Read and Write methods.type ReadWriter interface { Reader Writer}是对Reader和Writer接口的组合,聚合了基本的读写操作。简单示例如下:package

U3k28资讯网——每日最新资讯28at.com

io.ReadWriter

// ReadWriter is the interface that groups the basic Read and Write methods.type ReadWriter interface {	Reader	Writer}

是对Reader和Writer接口的组合,聚合了基本的读写操作。简单示例如下:U3k28资讯网——每日最新资讯28at.com

package mainimport (	"bytes"	"fmt"	"io")func main() {	var buf bytes.Buffer	rw := io.ReadWriter(&buf)	// 写入数据	_, err := rw.Write([]byte("hello world"))	if err != nil {		panic(err)	}	// 读取数据	var data = make([]byte, 11)	_, err = rw.Read(data)	if err != nil {		panic(err)	}	fmt.Println(string(data))}

io.ReadCloser

// ReadCloser is the interface that groups the basic Read and Close methods.type ReadCloser interface {	Reader	Closer}

是对Reader和Closer接口的组合,聚合了基本的读操作和关闭操作。使用 ReadCloser 接口时,一般会通过 NewReader 或其它方式获取一个 io.ReadCloser 对象,然后通过 Read 方法不断读取数据,直到数据读取结束,最后通过 Close 方法释放资源。U3k28资讯网——每日最新资讯28at.com

io.WriteCloser

// WriteCloser is the interface that groups the basic Write and Close methods.type WriteCloser interface {	Writer	Closer}

是对Writer和Closer接口的组合,聚合了基本的写操作和关闭操作。使用 WriteCloser 接口时,一般会通过 NewWriter 或其它方式获取一个 io.WriteCloser 对象,然后通过 Write 方法不断写入数据,直到数据写入结束,最后通过 Close 方法释放资源。简单示例如下:U3k28资讯网——每日最新资讯28at.com

package mainimport (	"bufio"	"compress/gzip"	"os")func main() {	f, err := os.Create("test.gz")	if err != nil {		panic(err)	}	defer f.Close()	// 通过 gzip.NewWriter 方法创建一个 io.WriteCloser 对象	// 用于将数据压缩并写入文件中	w := gzip.NewWriter(f)	defer w.Close()	// 将数据写入到 io.WriteCloser 对象中	writer := bufio.NewWriter(w)	_, err = writer.WriteString("hello world")	if err != nil {		panic(err)	}	writer.Flush()}

首先通过 os.Create 方法创建一个文件对象 f,然后通过 gzip.NewWriter 方法创建一个 io.WriteCloser 对象 w,该对象将数据写入到 f 中,并对数据进行压缩。接着通过 bufio.NewWriter 方法创建一个 bufio.Writer 对象 writer,该对象将数据写入到 io.WriteCloser 对象中。最后调用 writer.Flush 方法将缓冲区中的数据写入到 io.WriteCloser 对象中,然后释放资源。U3k28资讯网——每日最新资讯28at.com

io.ReadWriteCloser

// ReadWriteCloser is the interface that groups the basic Read, Write and Close methods.type ReadWriteCloser interface {	Reader	Writer	Closer}

是对 Reader、Writer 和 Closer 接口的组合,聚合了基本的读写操作和关闭操作。使用 ReadWriteCloser 接口时,可以通过 Read 方法从数据源读取数据,通过 Write 方法写入数据到数据接收器中,最后通过 Close 方法释放资源。U3k28资讯网——每日最新资讯28at.com

io.ReadSeeker

// ReadSeeker is the interface that groups the basic Read and Seek methods.type ReadSeeker interface {	Reader	Seeker}

是对 Reader 和 Seeker 接口的组合,聚合了基本的读取和移位操作。使用 ReadSeeker 接口时,可以通过 Read 方法从数据源读取数据,通过 Seek 方法在数据源中定位读取位置,然后再通过 Read 方法继续读取数据。简单示例:U3k28资讯网——每日最新资讯28at.com

package mainimport (	"fmt"	"io"	"strings")func main() {	s := strings.NewReader("0123456789")	rs := io.ReadSeeker(s)	// 读取前 4 个字节	var data = make([]byte, 4)	_, err := rs.Read(data)	if err != nil {		panic(err)	}	fmt.Println(string(data))	// 定位到第 6 个字节	offset, err := rs.Seek(2, io.SeekCurrent)	if err != nil {		panic(err)	}	fmt.Printf("current offset:%d/n", offset)	// 读取后 5 个字节	data = make([]byte, 5)	_, err = rs.Read(data)	if err != nil {		panic(err)	}	fmt.Println(string(data))}

io.ReadSeekCloser

// ReadSeekCloser is the interface that groups the basic Read, Seek and Close// methods.type ReadSeekCloser interface {	Reader	Seeker	Closer}

是对 Reader、Seeker 和 Closer 接口的组合,聚合了基本的读操作、移位操作和关闭操作。使用 ReadSeekCloser 接口时,可以通过 Read 方法从数据源读取数据,通过 Seek 方法在数据源中定位读取位置,最后通过 Close 方法释放资源。U3k28资讯网——每日最新资讯28at.com

io.WriteSeeker

// WriteSeeker is the interface that groups the basic Write and Seek methods.type WriteSeeker interface {	Writer	Seeker}

是对 Writer 和 Seeker 接口的组合,聚合了基本的写操作和移位操作。U3k28资讯网——每日最新资讯28at.com

io.ReadWriteSeeker

// ReadWriteSeeker is the interface that groups the basic Read, Write and Seek methods.type ReadWriteSeeker interface {	Reader	Writer	Seeker}

是对 Reader、Writer 和 Seeker 接口的组合,聚合了基本的读写操作和移位操作。U3k28资讯网——每日最新资讯28at.com

本文链接://www.dmpip.com//www.dmpip.com/showinfo-26-87-0.htmlGolang 中的 io 包详解:组合接口

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 服务存储设计模式:Cache-Aside模式

下一篇: K8S | Service服务发现

标签:
  • 热门焦点
  • 得物效率前端微应用推进过程与思考

    得物效率前端微应用推进过程与思考

    一、背景效率工程随着业务的发展,组织规模的扩大,越来越多的企业开始意识到协作效率对于企业团队的重要性,甚至是决定其在某个行业竞争中突围的关键,是企业长久生存的根本。得物
  • Flowable工作流引擎的科普与实践

    Flowable工作流引擎的科普与实践

    一.引言当我们在日常工作和业务中需要进行各种审批流程时,可能会面临一系列技术和业务上的挑战。手动处理这些审批流程可能会导致开发成本的增加以及业务复杂度的上升。在这
  • 如何通过Python线程池实现异步编程?

    如何通过Python线程池实现异步编程?

    线程池的概念和基本原理线程池是一种并发处理机制,它可以在程序启动时创建一组线程,并将它们置于等待任务的状态。当任务到达时,线程池中的某个线程会被唤醒并执行任务,执行完任
  • 虚拟键盘 API 的妙用

    虚拟键盘 API 的妙用

    你是否在遇到过这样的问题:移动设备上有一个固定元素,当激活虚拟键盘时,该元素被隐藏在了键盘下方?多年来,这一直是 Web 上的默认行为,在本文中,我们将探讨这个问题、为什么会发生
  • 重估百度丨“晚熟”的百度云,能等到春天吗?

    重估百度丨“晚熟”的百度云,能等到春天吗?

    ©自象限原创作者|程心排版|王喻可2016年7月13日,百度云计算战略发布会在北京举行,宣告着百度智能云的正式启程。彼时的会场座无虚席,甚至排队排到了门外,在场的所有人几乎都
  • 8月见!小米MIX Fold 3获得3C认证:支持67W快充

    8月见!小米MIX Fold 3获得3C认证:支持67W快充

    这段时间以来,包括三星、一加、荣耀等等有不少品牌旗下的最新折叠屏旗舰都得到了不少爆料,而小米新一代折叠屏旗舰——小米MIX Fold 3此前也屡屡被传
  • 疑似小米14外观设计图曝光:后置相机模组变化不大

    疑似小米14外观设计图曝光:后置相机模组变化不大

    下半年的大幕已经开启,而谁将成为下半年手机圈的主角就成为了大家关注的焦点,其中被传有望拿下新一代骁龙8 Gen3旗舰芯片的小米14系列更是备受大家瞩
  • 半导体需求下滑 三星电子DS业务部门今年营业亏损预计超10万亿韩元

    半导体需求下滑 三星电子DS业务部门今年营业亏损预计超10万亿韩元

    7月17日消息,据外媒报道,去年下半年开始的半导体需求下滑,影响到了三星电子、SK海力士、英特尔等诸多厂商,营收明显下滑,部分厂商甚至出现了亏损。作为
  • “买真退假” 这种“羊毛”不能薅

    “买真退假” 这种“羊毛”不能薅

    □ 法治日报 记者 王春   □ 本报通讯员 胡佳丽  2020年初,还在上大学的小东加入了一个大学生兼职QQ群。群主“七王”在群里介绍一些刷单赚
Top
Baidu
map