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

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

Golang 中的 Bufio 包詳解之常用函數

來源: 責編: 時間:2023-10-18 09:18:11 278觀看
導讀Golang 中的 bufio 包是帶緩沖 I/O 操作的標準庫,之前的幾篇文章詳細講解了 bufio.Reader、bufio.Writer 和 bufio.Scanner 這個幾個結構體的使用方法、特性和使用場景,本文介紹一下 bufio 包中的函數。介紹常用函數之

9LW28資訊網——每日最新資訊28at.com

Golang 中的 bufio 包是帶緩沖 I/O 操作的標準庫,之前的幾篇文章詳細講解了 bufio.Reader、bufio.Writer 和 bufio.Scanner 這個幾個結構體的使用方法、特性和使用場景,本文介紹一下 bufio 包中的函數。9LW28資訊網——每日最新資訊28at.com

介紹常用函數之前,先簡單介紹下另一個結構體類型和一個函數類型:bufio.ReadWriter 和 bufio.SplitFunc,對應的定義如下:9LW28資訊網——每日最新資訊28at.com

type ReadWriter struct {	*Reader	*Writer}type SplitFunc func(data []byte, atEOF bool) (advance int, token []byte, err error)

ReadWriter 結構體實現了 io.ReadWriter 接口,SplitFunc 是用來指定自定義分割規則的函數類型,通常結合 bufio.Scanner 使用。9LW28資訊網——每日最新資訊28at.com

創建對象函數

  • func NewReader(rd io.Reader) *Reader,創建一個帶緩沖的 Reader 對象。
  • func NewWriter(w io.Writer) *Writer,創建一個帶緩沖的 Writer 對象。
  • func NewReadWriter(r *Reader, w *Writer) *ReadWriter,創建一個帶緩沖的 ReadWriter 對象。
  • func NewReaderSize(rd io.Reader, size int) *Reader,創建一個帶緩沖的 Reader 對象,使用 size 指定緩沖區的最小值。
  • func NewWriterSize(w io.Writer, size int) *Writer,創建一個帶緩沖的 Writer 對象,使用 size 指定緩沖區的最小值。
  • func NewScanner(r io.Reader) *Scanner,創建一個帶緩沖的 Scanner 對象。

SplitFunc 類型函數

以下幾個函數都是 SplitFunc 類型,通常與 bufio.NewScanner 一起使用。9LW28資訊網——每日最新資訊28at.com

  • func ScanLines(data []byte, atEOF bool) (advance int, token []byte, err error),用于逐行讀取輸入流中的數據。
  • func ScanBytes(data []byte, atEOF bool) (advance int, token []byte, err error),用于逐個字節讀取輸入流中的數據。
  • func ScanRunes(data []byte, atEOF bool) (advance int, token []byte, err error),用于逐個 unicode 編碼讀取輸入流中的數據。
  • func ScanWords(data []byte, atEOF bool) (advance int, token []byte, err error),用于逐個單詞(空格分割)讀取輸入流中的數據。

使用示例

package mainimport (	"bufio"	"fmt"	"os"	"strings")func main() {	// 確定讀取文件的路徑	path := "file.txt"	// 打開文件并處理錯誤	file, err := os.Open(path)	if err != nil {		panic(err)	}	defer file.Close()	// 創建Scanner類型對象	scanner := bufio.NewScanner(file)	// 設置分割函數	scanner.Split(bufio.ScanWords)	// 創建一個map對象,用于存儲單詞出現的次數	counts := make(map[string]int)	// 讀取文件內容并統計單詞出現次數	for scanner.Scan() {		word := strings.ToLower(scanner.Text())		counts[word]++	}	// 檢查Scanner是否出錯	if err := scanner.Err(); err != nil {		panic(err)	}	// 輸出結果到控制臺	for word, count := range counts {		fmt.Printf("%s: %d/n", word, count)	}	// 讓用戶根據輸入的關鍵字進行篩選	fmt.Print("Enter keyword to filter results: ")	reader := bufio.NewReader(os.Stdin)	input, _ := reader.ReadString('/n')	keyword := strings.TrimSpace(input)	if keyword != "" {		for word, count := range counts {			if strings.Contains(word, keyword) {				fmt.Printf("%s: %d/n", word, count)			}		}	}}

首先創建了一個 Scanner 類型的對象,指定了 ScanWords 作為分隔函數,然后遍歷文件內容,統計單詞出現的次數并將結果存儲到一個map中,最后讓用戶輸入關鍵字進行篩選,根據關鍵字過濾并輸出結果。9LW28資訊網——每日最新資訊28at.com

小結

bufio 是一個提供了帶緩沖讀寫操作的包,通過使用 bufio 包提供的類型和方法,可以高效地讀寫數據,特別是當涉及到大量數據的讀寫時,可以大大提高程序的性能。9LW28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-13829-0.htmlGolang 中的 Bufio 包詳解之常用函數

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

上一篇: 基于ArkTS的應用入場動畫

下一篇: Spring Boot的自動配置原理及示例說明

標簽:
  • 熱門焦點
Top