读写接口

孤人 提交于 2020-04-06 07:09:16

针对一些输入/输出的场景,一般可能会涉及到读/写操作。比如,对一段字符串进行gzip压缩,或者解压缩,golang下主要通过两个接口来实现:

读的接口声明如下:

type Reader interface {
	Read(p []byte) (n int, err error)
}

写接口声明如下:

type Writer interface {
	Write(p []byte) (n int, err error)
}

结合compress/gzip包,我们来了解一下这两个接口。gzip中包括两个功能:压缩和解压缩。

解压缩的情况,gzip提供了gzip.Reader对象,用来从压缩的内容中读区被压缩前的原始内容。对象的创建函数如下:

func NewReader(r io.Reader) (*Reader, error) 

压缩的情况也类似:

func NewWriter(w io.Writer) *Writer 

对一个被gzip压缩的字符串,该如何转换为io.Reader/io.Writer呢? bytes包提供了Buffer对象,就实现了这两个接口。

拿压缩的情况j举例:

func gzip(src string) string {
	srcBuffer := bytes.NewBuffer()
	gzipWriter := gzip.NewWriter([]byte(src))
	gzipWriter.Close()
	
	return srcBuffer.String()
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!