日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

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

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

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

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

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

介紹常用函數之前,先簡單介紹下另一個結構體類型和一個函數類型:bufio.ReadWriter 和 bufio.SplitFunc,對應的定義如下:sZe28資訊網——每日最新資訊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 使用。sZe28資訊網——每日最新資訊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 一起使用。sZe28資訊網——每日最新資訊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中,最后讓用戶輸入關鍵字進行篩選,根據關鍵字過濾并輸出結果。sZe28資訊網——每日最新資訊28at.com

小結

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

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

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

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

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

標簽:
  • 熱門焦點
  • MIX Fold3包裝盒泄露 新機本月登場

    小米的全新折疊屏旗艦MIX Fold3將于本月發布,近日該機的真機包裝盒在網上泄露。從圖上來看,新的MIX Fold3包裝盒在外觀設計方面延續了之前的方案,變化不大,這也是目前小米旗艦
  • 學習JavaScript的10個理由...

    作者 | Simplilearn編譯 | 王瑞平當你決心學習一門語言的時候,很難選擇到底應該學習哪一門,常用的語言有Python、Java、JavaScript、C/CPP、PHP、Swift、C#、Ruby、Objective-
  • 這款新興工具平臺,讓你的電腦效率翻倍

    隨著信息技術的發展,我們獲取信息的渠道越來越多,但是處理信息的效率卻成為一個瓶頸。于是各種工具應運而生,都在爭相解決我們的工作效率問題。今天我要給大家介紹一款效率
  • JVM優化:實戰OutOfMemoryError異常

    一、Java堆溢出堆內存中主要存放對象、數組等,只要不斷地創建這些對象,并且保證 GC Roots 到對象之間有可達路徑來避免垃 圾收集回收機制清除這些對象,當這些對象所占空間超過
  • Temu起訴SHEIN,跨境電商戰事升級

    來源 | 伯虎財經(bohuFN)作者 | 陳平安日前據外媒報道,拼多多旗下跨境電商平臺Temu正對競爭對手SHEIN提起新訴訟,訴狀稱Shein“利用市場支配力量強迫服裝廠商與之簽訂獨家
  • 華為Mate60標準版細節曝光:經典星環相機模組回歸

    這段時間以來,關于華為新旗艦的爆料日漸密集。據此前多方爆料,今年華為將開始恢復一年雙旗艦戰略,除上半年推出的P60系列外,往年下半年的Mate系列也將
  • iQOO Neo8 Pro真機諜照曝光:天璣9200+和V1+旗艦雙芯加持

    去年10月,iQOO推出了iQOO Neo7系列機型,不僅搭載了天璣9000+,而且是同價位唯一一款天璣9000+直屏旗艦,一經上市便受到了用戶的廣泛關注。在時隔半年后,
  • OPPO K11樣張首曝:千元機影像“卷”得真不錯!

    一直以來,OPPO K系列機型都保持著較為均衡的產品體驗,歷來都是2K價位的明星機型,去年推出的OPPO K10和OPPO K10 Pro兩款機型憑借各自的出色配置,堪稱有
  • “買真退假” 這種“羊毛”不能薅

    □ 法治日報 記者 王春   □ 本報通訊員 胡佳麗  2020年初,還在上大學的小東加入了一個大學生兼職QQ群。群主“七王”在群里介紹一些刷單賺
Top 主站蜘蛛池模板: 全州县| 阿拉善左旗| 湖口县| 正镶白旗| 武乡县| 黄梅县| 阿克| 新绛县| 乌审旗| 伊金霍洛旗| 博客| 镶黄旗| 凭祥市| 河曲县| 巴塘县| 吴川市| 金川县| 合作市| 新巴尔虎右旗| 赤壁市| 和硕县| 松阳县| 凤翔县| 天峨县| 宁海县| 兴隆县| 香河县| 滨海县| 博兴县| 万载县| 霍州市| 施甸县| 蕲春县| 栾川县| 元江| 新余市| 澳门| 乌兰浩特市| 屏南县| 逊克县| 汨罗市|