讀寫接口

針對一些輸入/輸出的場景,通常可能會涉及到讀/寫操做。好比,對一段字符串進行gzip壓縮,或者解壓縮,golang下主要經過兩個接口來實現:golang

讀的接口聲明以下:函數

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

寫接口聲明以下:code

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

結合compress/gzip包,咱們來了解一下這兩個接口。gzip中包括兩個功能:壓縮和解壓縮。對象

解壓縮的狀況,gzip提供了gzip.Reader對象,用來從壓縮的內容中讀區被壓縮前的原始內容。對象的建立函數以下:接口

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

壓縮的狀況也相似:ip

func NewWriter(w io.Writer) *Writer

對一個被gzip壓縮的字符串,該如何轉換爲io.Reader/io.Writer呢? bytes包提供了Buffer對象,就實現了這兩個接口。字符串

拿壓縮的狀況j舉例:string

func gzip(src string) string {
	srcBuffer := bytes.NewBuffer()
	gzipWriter := gzip.NewWriter([]byte(src))
	gzipWriter.Close()
	
	return srcBuffer.String()
}
相關文章
相關標籤/搜索