成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Golang 中的 IO 包詳解:單字節(jié)操作接口

開發(fā) 后端
用于從字符流中讀取 Unicode 碼點(Rune),定義了一個基本方法 ReadRune,接受一個參數(shù)類型為 rune 的指針,并返回讀取的 Rune 以及錯誤類型。

io.ByteReader

type ByteReader interface {
	ReadByte() (byte, error)
}

定義了一個基本方法 ReadByte,用于讀取數(shù)據(jù)源中的單個字節(jié),如果沒有字節(jié)可讀,返回非 nil 的錯誤。

標準庫中的 bufio.Reader 實現(xiàn)了該接口,從一個 io.Reader 中讀取并提供帶緩存的讀取方法,簡單示例如下:

package main

import (
	"bufio"
	"fmt"
	"strings"
)

func main() {
	data := "abc123"
	reader := bufio.NewReader(strings.NewReader(data))

	for {
		c, err := reader.ReadByte()
		if err != nil {
			break
		}
		fmt.Print(string(c))
	}
}

io.ByteScanner

type ByteScanner interface {
	ByteReader
	UnreadByte() error
}

是 io.ByteReader 接口的擴展,提供了一個額外的方法:UnreadByte,UnreadByte方法讓下一次調(diào)用 ReadByte 時返回之前調(diào)用 ReadByte 時返回的同一個字節(jié)。

io.ByteWriter

// ByteWriter is the interface that wraps the WriteByte method.
type ByteWriter interface {
	WriteByte(c byte) error
}

定義了一個基本方法 ReadByte,用于向數(shù)據(jù)源中寫入單個字節(jié)的能力,

標準庫中的 bufio.Writer 實現(xiàn)了該接口,從字節(jié)序列中構(gòu)造并提供緩沖輸出,簡單示例如下:

package main

import (
	"bufio"
	"bytes"
	"fmt"
)

func main() {
	buf := new(bytes.Buffer)
	writer := bufio.NewWriter(buf)

	for _, c := range "abc123" {
		err := writer.WriteByte(byte(c))
		if err != nil {
			panic(err)
		}
	}

	writer.Flush()
	fmt.Println(buf.String())
}

io.RuneReader

type RuneReader interface {
	ReadRune() (r rune, size int, err error)
}

用于從字符流中讀取 Unicode 碼點(Rune),定義了一個基本方法 ReadRune,接受一個參數(shù)類型為 rune 的指針,并返回讀取的 Rune 以及錯誤類型。

io.RuneReader 通常與 bufio.Reader 一起使用,用于構(gòu)建高效的文本讀取器。例如如下示例,使用 bufio.Reader 讀取一個文件并逐行解析其中的 Unicode 碼點:

package main

import (
	"bufio"
	"fmt"
	"io"
	"log"
	"os"
)

func main() {
	file, _ := os.Open("file.txt")
	defer file.Close()

	reader := bufio.NewReader(file)

	for {
		r, _, err := reader.ReadRune()
		if err != nil {
			if err == io.EOF {
				break
			}
			log.Fatal(err)
		}
		if r == '\n' {
			fmt.Println()
		} else {
			fmt.Print(r)
		}
	}
}

io.RuneScanner

type RuneScanner interface {
	RuneReader
	UnreadRune() error
}

擴展了 io.RuneReader 接口,添加了一個名為 UnreadRune 的方法,用于撤消最近讀取的 Rune,并使下一次讀取的時候再次返回該 Rune。簡單示例如下:

package main

import (
	"bufio"
	"fmt"
	"io"
	"log"
	"os"
	"strings"
)

func main() {
	scanner := bufio.NewScanner(os.Stdin)

	for {
		if ok := scanner.Scan(); !ok {
			break
		}

		str := scanner.Text()
		reader := strings.NewReader(str)

		for {
			runeScanner := bufio.NewReader(reader)
			r, _, err := runeScanner.ReadRune()
			if err != nil {
				if err == io.EOF {
					break
				}
				log.Fatal(err)
			}
			fmt.Printf("%#U\n", r)
		}
	}
}

使用 bufio.Scanner 從控制臺讀取每一行輸入,然后將每一行轉(zhuǎn)換為一個 strings.Reader,并將其傳遞給 bufio.NewReader 來掃描 Rune。

io.StringWriter

// StringWriter is the interface that wraps the WriteString method.
type StringWriter interface {
	WriteString(s string) (n int, err error)
}

定義了一個基本方法 WriteString,用來將數(shù)據(jù)寫入一個字符串。簡單示例如下:

package main

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

func main() {
	var builder strings.Builder

	writer := io.StringWriter(&builder)

	writer.WriteString("Hello, ")
	writer.WriteString("World!")

	result := builder.String()

	fmt.Println(result) // 輸出:Hello, World!
}

首先創(chuàng)建了一個 strings.Builder,然后使用 io.StringWriter 將 builder 轉(zhuǎn)換為一個 io.Writer,最后使用 builder.String 將最終結(jié)果轉(zhuǎn)換為一個 string。

責任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2023-08-03 08:48:07

Golang接口

2023-08-02 09:07:27

Golangio 包

2023-08-31 09:28:12

Golang可導出函數(shù)

2023-08-07 09:18:32

Golang偏移量接口

2023-08-28 17:16:51

Golangio 包

2023-03-30 07:52:03

Golang接口

2023-11-27 15:02:37

BytesGolang

2009-03-27 10:53:52

注入SQLMySQL

2023-06-27 08:45:19

原子操作Golang

2023-10-18 08:22:38

BufioGolang

2023-05-12 09:40:53

ContextGolang

2023-09-06 09:10:04

Golang字符串

2023-11-07 09:02:07

Golangbytes

2023-09-07 07:35:54

GolangBufio

2023-09-04 08:17:37

Golangstrings 包

2023-09-05 08:22:44

Golangstrings 包

2024-01-18 09:07:04

Errors函數(shù)Golang

2023-10-10 08:57:44

Golangbufio

2023-11-03 08:53:15

StrconvGolang

2023-10-07 09:08:32

Golangbufio
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产精品高清在线 | 免费黄色片在线观看 | 草草网 | 91亚洲一区 | 日本成人在线免费视频 | 国产精品亚洲一区二区三区在线观看 | 久草福利 | 超级黄色一级片 | 国产精品1区2区3区 中文字幕一区二区三区四区 | 国产精品美女久久久久久久网站 | 精品久久久久久久久久久久久久久久久 | 在线免费观看a级片 | 国产免费福利小视频 | 超碰精品在线 | 国产午夜精品久久久 | 国产精品日本一区二区在线播放 | 黑人巨大精品欧美一区二区一视频 | 亚洲一区二区三区免费视频 | 亚洲国产成人精品久久久国产成人一区 | 亚洲精品一区二区三区中文字幕 | 国产精品久久久久久久白浊 | 亚洲欧美一区二区三区视频 | 久久免费视频2 | 久久爱综合| 欧美欧美欧美 | 丁香五月缴情综合网 | 日韩电影中文字幕在线观看 | 中文字幕不卡在线观看 | 成人高清视频在线观看 | 91国自视频 | 欧美一区成人 | 亚洲国产成人精品女人久久久野战 | 色综合久久久 | 男女羞羞视频网站 | 一区二区三区视频在线免费观看 | 黄色亚洲 | 午夜看片 | 亚洲精品18 | 欧美激情精品久久久久久 | www国产成人免费观看视频,深夜成人网 | 夜夜操操操 |