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

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

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

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

io.ReadWriter

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

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

io.WriteSeeker

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

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

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

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

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

下一篇: K8S | Service服务发现

标签:
  • 热门焦点
  • vivo TWS Air开箱体验:真轻 臻好听

    在vivo S15系列新机的发布会上,vivo的最新款真无线蓝牙耳机vivo TWS Air也一同发布,本次就这款耳机新品给大家带来一个简单的分享。外包装盒上,vivo TWS Air保持了vivo自家产
  • K8S | Service服务发现

    一、背景在微服务架构中,这里以开发环境「Dev」为基础来描述,在K8S集群中通常会开放:路由网关、注册中心、配置中心等相关服务,可以被集群外部访问;图片对于测试「Tes」环境或者
  • 多线程开发带来的问题与解决方法

    使用多线程主要会带来以下几个问题:(一)线程安全问题  线程安全问题指的是在某一线程从开始访问到结束访问某一数据期间,该数据被其他的线程所修改,那么对于当前线程而言,该线程
  • 猿辅导与新东方的两种“归途”

    作者|卓心月 出品|零态LT(ID:LingTai_LT)如何成为一家伟大企业?答案一定是对“势”的把握,这其中最关键的当属对企业战略的制定,且能够站在未来看现在,即使这其中的
  • 花7万退货退款无门:谁在纵容淘宝珠宝商家造假?

    来源:极点商业作者:杨铭在淘宝购买珠宝玉石后,因为保证金不够赔付,店铺关闭,退货退款难、维权无门的比比皆是。“提供相关产品鉴定证书,支持全国复检,可以30天无理由退换货。&
  • 东方甄选单飞:有些鸟注定是关不住的

    文/彭宽鸿编辑/罗卿东方甄选创始人俞敏洪带队的“7天甘肃行”直播活动已在近日顺利收官。成立后一年多时间里,东方甄选要脱离抖音自立门户的传闻不绝于耳,“7
  • 华为HarmonyOS 4.0将于8月4日发布 或搭载AI大模型技术

    华为宣布HarmonyOS4.0将于8月4日正式发布。此前,华为已经针对开发者公布了HarmonyOS4.0,以便于开发者提前进行适配,也因此被曝光出了一些新系统的特性
  • 2纳米决战2025

    集微网报道 从三强争霸到四雄逐鹿,2nm的厮杀声已然隐约传来。无论是老牌劲旅台积电、三星,还是誓言重回先进制程领先地位的英特尔,甚至初成立不久的新
  • AMD的AI芯片转单给三星可能性不大 与台积电已合作至2nm制程

    据 DIGITIMES 消息,英伟达 AI GPU 出货逐季飙升,接下来 AMD MI 300 系列将在第 4 季底量产。而半导体业内人士表示,近日传出 AMD 的 AI 芯片将转单给
Top