AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

Golang 中的 Bufio 包詳解之 Bufio.Scanner

來源: 責編: 時間:2023-10-10 18:30:57 252觀看
導讀bufio.Scannerbufio.Scanner 是 Golang 中一個用于逐個讀取輸入緩沖區的掃描器,通常與 bufio.Reader 一起使用,bufio.Reader 用于從輸入中讀取數據,而 bufio.Scanner 則用于逐個讀取輸入緩沖區的內容。bufio.Scanner 可

5V828資訊網——每日最新資訊28at.com

bufio.Scanner

bufio.Scanner 是 Golang 中一個用于逐個讀取輸入緩沖區的掃描器,通常與 bufio.Reader 一起使用,bufio.Reader 用于從輸入中讀取數據,而 bufio.Scanner 則用于逐個讀取輸入緩沖區的內容。5V828資訊網——每日最新資訊28at.com

bufio.Scanner 可以將輸入數據分解為邏輯上的行并返回。Scanner 通過定義一個 Split 函數來將輸入分解為行。結構體定義和對應的方法如下:5V828資訊網——每日最新資訊28at.com

type Scanner struct {	r            io.Reader // The reader provided by the client.	split        SplitFunc // The function to split the tokens.	maxTokenSize int       // Maximum size of a token; modified by tests.	token        []byte    // Last token returned by split.	buf          []byte    // Buffer used as argument to split.	start        int       // First non-processed byte in buf.	end          int       // End of data in buf.	err          error     // Sticky error.	empties      int       // Count of successive empty tokens.	scanCalled   bool      // Scan has been called; buffer is in use.	done         bool      // Scan has finished.}

下面是 bufio.Writer 提供的一些主要方法:5V828資訊網——每日最新資訊28at.com

  • func (s *Scanner) Scan() bool,用于讀取輸入緩沖區中的下一個數據塊,并將其保存在內部的緩沖區中。如果讀取成功,則返回 true;如果已經讀取了所有數據或者發生了錯誤,則返回 false。
  • func (s *Scanner) Text() string,用于獲取內部緩沖區中的文本內容,通常與 Scan() 方法一起使用,用于獲取讀取的數據。
  • func (s *Scanner) Bytes() []byte,用于獲取內部緩沖區中的字節內容,通常與 Scan() 方法一起使用,用于獲取讀取的數據。
  • func (s *Scanner) Err() error,用于獲取在讀取輸入時發生的錯誤信息,如果讀取過程中沒有發生錯誤,則返回 nil;否則,返回一個非 nil 的錯誤對象。
  • func (s *Scanner) Buffer(buf []byte, max int), 用于自定義輸入緩沖區大小,接受一個 []byte 類型的參數,用于指定緩沖區的大小。
  • func (s *Scanner) Split(split SplitFunc),用于指定一個分割函數,將輸入分割成多個數據塊,接受一個 func([]byte) bool 類型的參數,該函數在每次讀取輸入時被調用,用于判斷是否需要將當前數據塊分割成多個小塊。通常用于處理非常大的數據塊,以避免內存溢出等問題。

使用示例

簡單使用示例如下:5V828資訊網——每日最新資訊28at.com

package mainimport (	"bufio"	"fmt"	"strings")func main() {	input := "路多辛的所思所想/n很值得一看哦!/n"	scanner := bufio.NewScanner(strings.NewReader(input))	// 逐行遍歷	for scanner.Scan() {		fmt.Println(scanner.Text())	}	// 錯誤處理	if err := scanner.Err(); err != nil {		fmt.Println("Error:", err)	}	// 自定義分隔符	scanner = bufio.NewScanner(strings.NewReader("路多辛,的,所思所想"))	scanner.Split(func(data []byte, atEOF bool) (advance int, token []byte, err error) {		// 分隔符為逗號		for i, d := range data {			if d == ',' {				return i + 1, data[:i], nil			}		}		if atEOF && len(data) > 0 {			return len(data), data, nil		}		return 0, nil, nil	})	for scanner.Scan() {		fmt.Println(scanner.Text())	}}

運行看下效果:5V828資訊網——每日最新資訊28at.com

$ go run main.go路多辛的所思所想很值得一看哦路多辛的所思所想

第一個示例中,使用了默認的分割方式,即按行讀取輸入。第二個示例中,使用自定義分隔符,將輸入的字符串按照逗號進行分隔。5V828資訊網——每日最新資訊28at.com

小結

bufio.Scanner 在讀取緩沖區時,會將讀取的數據保存在內部緩沖區中。因此,在每次調用 scanner.Scan() 方法時,都會從輸入中讀取一個新的數據塊,并保存在內部緩沖區中。如果需要讀取輸入緩沖區中的所有數據,需要不斷調用 scanner.Scan() 方法,直到返回 false 為止。5V828資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-12701-0.htmlGolang 中的 Bufio 包詳解之 Bufio.Scanner

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 如何使用CSS和JavaScript實施暗模式?

下一篇: 面試中如何答好:AQS

標簽:
  • 熱門焦點
  • K60至尊版剛預熱 一加Ace2 Pro正面硬剛

    Redmi這邊剛如火如荼的宣傳了K60 Ultra的各種技術和硬件配置,作為競品的一加也坐不住了。一加中國區總裁李杰發布了兩條微博,表示在自家的一加Ace2上早就已經采用了和PixelWo
  • 7月安卓手機性能榜:紅魔8S Pro再奪榜首

    7月份的手機市場風平浪靜,除了紅魔和努比亞帶來了兩款搭載驍龍8Gen2領先版處理器的新機之外,別的也想不到有什么新品了,這也正常,通常6月7月都是手機廠商修整的時間,進入8月份之
  • 5月iOS設備性能榜:M1 M2依舊是榜單前五

    和上個月一樣,沒有新品發布的iOS設備性能榜的上榜設備并沒有什么更替,僅僅只有跑分變化而產生的排名變動,剛剛開始的蘋果WWDC2023,推出的產品也依舊是新款Mac Pro、新款Mac Stu
  • 2天漲粉255萬,又一賽道在抖音爆火

    來源:運營研究社作者 | 張知白編輯 | 楊佩汶設計 | 晏談夢潔這個暑期,旅游賽道徹底火了:有的「地方」火了——貴州村超旅游收入 1 個月超過 12 億;有的「博主」火了&m
  • 小米公益基金會捐贈2500萬元馳援北京、河北暴雨救災

    8月2日消息,今日小米科技創始人雷軍在其微博上發布消息稱,小米公益基金會宣布捐贈2500萬元馳援北京、河北暴雨救災。攜手抗災,京冀安康!以下為公告原文
  • 三星顯示已開始為AR設備研發硅基LED微顯示屏

    7月18日消息,據外媒報道,隨著蘋果首款頭顯產品Vision Pro在6月份正式推出,AR/VR/MR等頭顯產品也就將成為各大公司下一個重要的競爭領域,對顯示屏這一關
  • OPPO K11搭載高性能石墨散熱系統:旗艦同款 性能涼爽釋放

    日前OPPO官方宣布,將于7月25日14:30舉辦新品發布會,屆時全新的OPPO K11將正式與大家見面,將主打旗艦影像,和同檔位競品相比,其最大的賣點就是將配備索尼
  • 微軟發布Windows 11新版 引入全新任務欄狀態

    近日,微軟發布了Windows 11新版,而Build 22563更新主要引入了幾周前曝光的平板模式任務欄等,系統更流暢了。更新中,Windows 11加入了專門針對平板優化的任務欄
  • “買真退假” 這種“羊毛”不能薅

    □ 法治日報 記者 王春   □ 本報通訊員 胡佳麗  2020年初,還在上大學的小東加入了一個大學生兼職QQ群。群主“七王”在群里介紹一些刷單賺
Top