国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Golang 中的 bytes 包詳解(二):bytes.Reader

這篇具有很好參考價值的文章主要介紹了Golang 中的 bytes 包詳解(二):bytes.Reader。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Golang 中的 bytes 包是其中一個 IO 操作標(biāo)準(zhǔn)庫,實現(xiàn)了對字節(jié)切片([]byte)的操作,提供了類似于 strings 包的功能。本文先講解一下 bytes 包中的結(jié)構(gòu)體 bytes.Reader。

bytes.Reader

bytes.Reader 實現(xiàn)了 io.Reader、io.ReaderAt、io.WriterTo、io.Seeker、io.ByteScanner 和 io.RuneScanner接口,提供了從字節(jié)切片中讀取數(shù)據(jù)的功能。結(jié)構(gòu)體定義和對應(yīng)的方法如下:

type Reader struct {
	s        []byte
	i        int64 // current reading index
	prevRune int   // index of previous rune; or < 0
}

下面是 bytes.Reader 提供的方法:

  • func (r *Reader) Len() int,返回字節(jié)切片中未被讀取的字節(jié)數(shù)。
  • func (r *Reader) Read(b []byte) (n int, err error),從 bytes.Reader 中讀取數(shù)據(jù)并填充到 b 字節(jié)切片中。
  • func (r *Reader) ReadAt(b []byte, off int64) (n int, err error),類似于 Read,但使用偏移量 off 指定從哪里開始讀取。
  • func (r *Reader) ReadByte() (byte, error),從字節(jié)切片中讀取一個字節(jié)并返回。
  • func (r *Reader) ReadRune() (ch rune, size int, err error),從字節(jié)切片中讀取一個 UTF-8 編碼的字符,并返回該字符的 Unicode 編碼點和字符長度。
  • func (r *Reader) Seek(offset int64, whence int) (int64, error),從字節(jié)切片中移動讀取指針,offset 表示偏移量,whence 表示移動的基準(zhǔn)位置。
  • func (r *Reader) UnreadByte() error,撤消最后一次讀取操作并將讀取指針向后移動一個字節(jié)。
  • func (r *Reader) UnreadRune() error,撤消最后一次讀取操作并將讀取指針向后移動一個 UTF-8 字符。
  • func (r *Reader) Size() int64,返回原始字節(jié)切片的長度。
  • func (r *Reader) Reset(b []byte),重置 Reader從 b 中讀取數(shù)據(jù)
  • func (r *Reader) WriteTo(w io.Writer),寫入數(shù)據(jù)到 w 中直到寫完為止。

使用示例

package main

import (
	"bytes"
	"fmt"
)

func main() {
	data := []byte("路多辛的所思所想")
	reader := bytes.NewReader(data)

	// 讀取整個字節(jié)數(shù)組
	buf := make([]byte, len(data))
	_, err := reader.Read(buf)
	if err != nil {
		fmt.Println("Read failed:", err)
	}
	fmt.Println("Bytes read:", buf)

	// 讀取字節(jié)切片的一部分
	part := make([]byte, 3)
	_, err = reader.Read(part)
	if err != nil {
		fmt.Println("Read failed:", err)
	}
	fmt.Println("Bytes read:", part)

	// 查找并讀取字節(jié)切片中的某個字符
	offset, err := reader.Seek(6, 0)
	if err != nil {
		fmt.Println("Seek failed:", err)
	}
	ch, size, err := reader.ReadRune()
	if err != nil {
		fmt.Println("ReadRune failed:", err)
	}
	fmt.Printf("Read %c with size %d at offset %d\n", ch, size, offset)
}

首先定義了一個字節(jié)切片 data,作為參數(shù)傳入 bytes.NewReader 函數(shù)創(chuàng)建一個 reader 對象。然后使用 reader 對象的 Read 方法讀取整個字節(jié)切片和一部分數(shù)據(jù),并使用 Seek 和 ReadRune 方法查找字節(jié)切片中的某個字符并讀取。

小結(jié)

bytes.Reader 可以很方便地處理和讀取字節(jié)切片,可以像讀取文件一樣讀取字節(jié)切片中的數(shù)據(jù),功能非常強大和實用。文章來源地址http://www.zghlxwxcb.cn/news/detail-527227.html

到了這里,關(guān)于Golang 中的 bytes 包詳解(二):bytes.Reader的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Golang 中的 map 詳解

    Golang 中的 map 詳解

    1、map 的定義 ??在計算機科學(xué)里,被稱為相關(guān)數(shù)組、map、符號表或者字典,是由一組 key, value 對組成的抽象數(shù)據(jù)結(jié)構(gòu),并且同一個 key 只會出現(xiàn)一次。 ??兩個關(guān)鍵點:map 是由 key-value 對組成的;key 只會出現(xiàn)一次。 ??map 的設(shè)計也被稱為 “The dictionary problem(字典問題)

    2024年02月14日
    瀏覽(24)
  • Golang 中的接口詳解

    什么是接口:接口(interface)定義了一個對象的行為規(guī)范,只定義規(guī)范不實現(xiàn),由具體的對象來實現(xiàn)規(guī)范的細節(jié)。 在Go語言中接口(interface)是一種類型,一種抽象的類型。 interface是一組method的集合,是duck-type programming的一種體現(xiàn)。 接口做的事情就像是定義一個協(xié)議(規(guī)則

    2024年02月13日
    瀏覽(29)
  • 一步步帶你剖析Java中的Reader類

    本文分享自華為云社區(qū)《深入理解Java中的Reader類:一步步剖析》,作者:bug菌。 在Java開發(fā)過程中,我們經(jīng)常需要讀取文件中的數(shù)據(jù),而數(shù)據(jù)的讀取需要一個合適的類進行處理。Java的IO包提供了許多類用于數(shù)據(jù)的讀取和寫入,其中Reader便是其中之一。本文將對Java中的Reader進行

    2024年02月08日
    瀏覽(18)
  • Golang 中的信號(Signal)機制詳解

    目錄 信號基礎(chǔ)概念 Golang 對信號的處理 信號處理的使用場景和使用示例 信號的局限性 Go 中的特殊信號處理 小結(jié) Signal 是一種操作系統(tǒng)級別的事件通知機制,進程可以響應(yīng)特定的系統(tǒng)信號。這些信號用于指示進程執(zhí)行特定的操作,如程序終止、掛起、恢復(fù)等。Golang 的標(biāo)準(zhǔn)庫

    2024年01月16日
    瀏覽(31)
  • Golang 中的 bufio 包詳解(五):常用函數(shù)

    Golang 中的 bufio 包是帶緩沖 I/O 操作的標(biāo)準(zhǔn)庫,之前的幾篇文章詳細講解了 bufio.Reader、bufio.Writer 和 bufio.Scanner 這個幾個結(jié)構(gòu)體的使用方法、特性和使用場景,本文介紹一下 bufio 包中的函數(shù)。 介紹常用函數(shù)之前,先簡單介紹下另一個結(jié)構(gòu)體類型和一個函數(shù)類型:bufio.ReadWriter

    2024年02月11日
    瀏覽(15)
  • Golang 中的 io 包詳解(二):組合接口

    Golang 中,接口可以通過嵌入多個其他接口組成組合接口。組合接口表示的是子接口的集合,具有所有子接口的方法,可以通過組合多個不同的接口組成一個更強大的抽象。本文主要介紹下 io 包中的組合接口。 是對Reader和Writer接口的組合,聚合了基本的讀寫操作。簡單示例如

    2024年02月08日
    瀏覽(18)
  • Golang 中的 time 包詳解(一):time.Time

    在日常開發(fā)過程中,會頻繁遇到對時間進行操作的場景,使用 Golang 中的 time 包可以很方便地實現(xiàn)對時間的相關(guān)操作。接下來的幾篇文章會詳細講解 time 包,本文先講解一下 time 包中的結(jié)構(gòu)體 time.Time。 time.Time 類型用來表示一個具體的時間點,可以精確到納秒。結(jié)構(gòu)體定義和

    2024年02月15日
    瀏覽(22)
  • Golang 中的 archive/zip 包詳解(三):常用函數(shù)

    Golang 中的 archive/zip 包用于處理 ZIP 格式的壓縮文件,提供了一系列用于創(chuàng)建、讀取和解壓縮 ZIP 格式文件的函數(shù)和類型,使用起來非常方便,本文講解下常用函數(shù)。 定義如下: 打開一個 ZIP 文件,并返回一個 zip.ReadCloser 類型的對象。簡單使用示例如下: 定義如下: 創(chuàng)建一個

    2024年02月10日
    瀏覽(19)
  • Golang 中的 strings 包詳解(一):strings.Builder

    strings.Builder 是 Golang? 中的一個用于高效構(gòu)建字符串的類型,使用了一個循環(huán)緩沖區(qū)來存儲字符數(shù)據(jù),避免了頻繁的內(nèi)存分配和拷貝操作,尤其適用于頻繁拼接字符串的場景。結(jié)構(gòu)體定義和對應(yīng)的方法如下: 其中比較常用的方法有: Reset() :重置 Builder 中的字符串內(nèi)容,使得

    2024年02月09日
    瀏覽(21)
  • Golang 中的 time 包詳解(二):time.Duration

    在日常開發(fā)過程中,會頻繁遇到對時間進行操作的場景,使用 Golang 中的 time 包可以很方便地實現(xiàn)對時間的相關(guān)操作。接下來的幾篇文章會詳細講解 time 包,本文講解一下 time 包中的 time.Duration 類型。 time.Duration 類型是一個有符號的 int64 類型,以納秒為單位,用來表示兩個時

    2024年02月15日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包