av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

Golang中的io包詳解:組合接口

io.ReadWriter

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

是對(duì)Reader和Writer接口的組合,聚合了基本的讀寫(xiě)操作。簡(jiǎn)單示例如下:

創(chuàng)新互聯(lián)建站是一家專(zhuān)業(yè)提供高昌企業(yè)網(wǎng)站建設(shè),專(zhuān)注與網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站、H5開(kāi)發(fā)、小程序制作等業(yè)務(wù)。10年已為高昌眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。

package main

import (
	"bytes"
	"fmt"
	"io"
)

func main() {
	var buf bytes.Buffer
	rw := io.ReadWriter(&buf)

	// 寫(xiě)入數(shù)據(jù)
	_, err := rw.Write([]byte("hello world"))
	if err != nil {
		panic(err)
	}

	// 讀取數(shù)據(jù)
	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
}

是對(duì)Reader和Closer接口的組合,聚合了基本的讀操作和關(guān)閉操作。使用 ReadCloser 接口時(shí),一般會(huì)通過(guò) NewReader 或其它方式獲取一個(gè) io.ReadCloser 對(duì)象,然后通過(guò) Read 方法不斷讀取數(shù)據(jù),直到數(shù)據(jù)讀取結(jié)束,最后通過(guò) Close 方法釋放資源。

io.WriteCloser

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

是對(duì)Writer和Closer接口的組合,聚合了基本的寫(xiě)操作和關(guān)閉操作。使用 WriteCloser 接口時(shí),一般會(huì)通過(guò) NewWriter 或其它方式獲取一個(gè) io.WriteCloser 對(duì)象,然后通過(guò) Write 方法不斷寫(xiě)入數(shù)據(jù),直到數(shù)據(jù)寫(xiě)入結(jié)束,最后通過(guò) Close 方法釋放資源。簡(jiǎn)單示例如下:

package main

import (
	"bufio"
	"compress/gzip"
	"os"
)

func main() {
	f, err := os.Create("test.gz")
	if err != nil {
		panic(err)
	}
	defer f.Close()

	// 通過(guò) gzip.NewWriter 方法創(chuàng)建一個(gè) io.WriteCloser 對(duì)象
	// 用于將數(shù)據(jù)壓縮并寫(xiě)入文件中
	w := gzip.NewWriter(f)
	defer w.Close()

	// 將數(shù)據(jù)寫(xiě)入到 io.WriteCloser 對(duì)象中
	writer := bufio.NewWriter(w)
	_, err = writer.WriteString("hello world")
	if err != nil {
		panic(err)
	}

	writer.Flush()
}

首先通過(guò) os.Create 方法創(chuàng)建一個(gè)文件對(duì)象 f,然后通過(guò) gzip.NewWriter 方法創(chuàng)建一個(gè) io.WriteCloser 對(duì)象 w,該對(duì)象將數(shù)據(jù)寫(xiě)入到 f 中,并對(duì)數(shù)據(jù)進(jìn)行壓縮。接著通過(guò) bufio.NewWriter 方法創(chuàng)建一個(gè) bufio.Writer 對(duì)象 writer,該對(duì)象將數(shù)據(jù)寫(xiě)入到 io.WriteCloser 對(duì)象中。最后調(diào)用 writer.Flush 方法將緩沖區(qū)中的數(shù)據(jù)寫(xiě)入到 io.WriteCloser 對(duì)象中,然后釋放資源。

io.ReadWriteCloser

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

是對(duì) Reader、Writer 和 Closer 接口的組合,聚合了基本的讀寫(xiě)操作和關(guān)閉操作。使用 ReadWriteCloser 接口時(shí),可以通過(guò) Read 方法從數(shù)據(jù)源讀取數(shù)據(jù),通過(guò) Write 方法寫(xiě)入數(shù)據(jù)到數(shù)據(jù)接收器中,最后通過(guò) Close 方法釋放資源。

io.ReadSeeker

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

是對(duì) Reader 和 Seeker 接口的組合,聚合了基本的讀取和移位操作。使用 ReadSeeker 接口時(shí),可以通過(guò) Read 方法從數(shù)據(jù)源讀取數(shù)據(jù),通過(guò) Seek 方法在數(shù)據(jù)源中定位讀取位置,然后再通過(guò) Read 方法繼續(xù)讀取數(shù)據(jù)。簡(jiǎn)單示例:

package main

import (
	"fmt"
	"io"
	"strings"
)

func main() {
	s := strings.NewReader("0123456789")
	rs := io.ReadSeeker(s)

	// 讀取前 4 個(gè)字節(jié)
	var data = make([]byte, 4)
	_, err := rs.Read(data)
	if err != nil {
		panic(err)
	}
	fmt.Println(string(data))

	// 定位到第 6 個(gè)字節(jié)
	offset, err := rs.Seek(2, io.SeekCurrent)
	if err != nil {
		panic(err)
	}
	fmt.Printf("current offset:%d\n", offset)

	// 讀取后 5 個(gè)字節(jié)
	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
}

是對(duì) Reader、Seeker 和 Closer 接口的組合,聚合了基本的讀操作、移位操作和關(guān)閉操作。使用 ReadSeekCloser 接口時(shí),可以通過(guò) Read 方法從數(shù)據(jù)源讀取數(shù)據(jù),通過(guò) Seek 方法在數(shù)據(jù)源中定位讀取位置,最后通過(guò) Close 方法釋放資源。

io.WriteSeeker

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

是對(duì) Writer 和 Seeker 接口的組合,聚合了基本的寫(xiě)操作和移位操作。

io.ReadWriteSeeker

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

是對(duì) Reader、Writer 和 Seeker 接口的組合,聚合了基本的讀寫(xiě)操作和移位操作。


文章標(biāo)題:Golang中的io包詳解:組合接口
文章出自:http://uogjgqi.cn/article/codegpi.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流