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

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

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

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

io.ReadWriter

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

是对Reader和Writer接口的组合,聚合了基本的读写操作。简单示例如下:WGr28资讯网——每日最新资讯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 方法释放资源。WGr28资讯网——每日最新资讯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 方法释放资源。简单示例如下:WGr28资讯网——每日最新资讯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 对象中,然后释放资源。WGr28资讯网——每日最新资讯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 方法释放资源。WGr28资讯网——每日最新资讯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 方法继续读取数据。简单示例:WGr28资讯网——每日最新资讯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 方法释放资源。WGr28资讯网——每日最新资讯28at.com

io.WriteSeeker

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

是对 Writer 和 Seeker 接口的组合,聚合了基本的写操作和移位操作。WGr28资讯网——每日最新资讯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 接口的组合,聚合了基本的读写操作和移位操作。WGr28资讯网——每日最新资讯28at.com

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

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

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

下一篇: K8S | Service服务发现

标签:
  • 热门焦点
  • 2023年Q2用户偏好榜:12+256G版本成新主流

    3月份的性能榜、性价比榜和好评榜之后,就要轮到2023年的第二季度偏好榜了,上半年的新机潮已经过去,最明显的肯定就是大内存和存储的机型了,另外部分中端机也取消了屏幕塑料支架
  • 6月安卓手机好评榜:魅族20 Pro蝉联冠军

    性能榜和性价比榜之后,我们来看最后的安卓手机好评榜,数据来源安兔兔评测,收集时间2023年6月1日至6月30日,仅限国内市场。第一名:魅族20 Pro好评率:95%5月份的时候魅族20 Pro就是
  • 量化指标是与非:挽救被量化指标扼杀的技术团队

    作者 | 刘新翠整理 | 徐杰承本文整理自快狗打车技术总监刘新翠在WOT2023大会上的主题分享,更多精彩内容及现场PPT,请关注51CTO技术栈公众号,发消息【WOT2023PPT】即可直接领取
  • 十个简单但很有用的Python装饰器

    装饰器(Decorators)是Python中一种强大而灵活的功能,用于修改或增强函数或类的行为。装饰器本质上是一个函数,它接受另一个函数或类作为参数,并返回一个新的函数或类。它们通常用
  • 使用Webdriver-manager解决浏览器与驱动不匹配所带来自动化无法执行的问题

    1、前言在我们使用 Selenium 进行 UI 自动化测试时,常常会因为浏览器驱动与浏览器版本不匹配,而导致自动化测试无法执行,需要手动去下载对应的驱动版本,并替换原有的驱动,可能还
  • Python异步IO编程的进程/线程通信实现

    这篇文章再讲3种方式,同时讲4中进程间通信的方式一、 Python 中线程间通信的实现方式共享变量共享变量是多个线程可以共同访问的变量。在Python中,可以使用threading模块中的L
  • 得物宠物生意「狂飙」,发力“它经济”

    作者|花花小萌主近日,得物宣布正式上线宠物鉴别,通过得物App内的“在线鉴别”,可找到鉴别宠物的选项。通过上传自家宠物的部位细节,就能收获拥有专业资质认证的得物鉴
  • 大厂卷向扁平化

    来源:新熵作者丨南枝 编辑丨月见大厂职级不香了。俗话说,兵无常势,水无常形,互联网企业调整职级体系并不稀奇。7月13日,淘宝天猫集团启动了近年来最大的人力制度改革,目前已形成一
  • 华为开发者大会2023日程公开:开设鸿蒙HarmonyOS 4体验区

    IT之家 7 月 31 日消息,华为今日公布了 HDC.Together 开发者大会 2023 的详细日程。整场大会将于 8 月 4 日-6 日之间举行,届时将发布最新一代鸿蒙 H
Top