在Go 中高效讀取一行到字串
Go 標準函式庫提供了用於讀取輸入的低階函數,回傳字節數組而不是字串。為了方便使用,我們探索了一種直接從 readline 函數取得字串的替代方法。
自訂 Readln 函數
為了簡化 readline 操作,我們建立一個自訂Readln 函數從提供的檔案中讀取一行(不包含換行符) bufio.Reader:
func Readln(r *bufio.Reader) (string, error) { var ( isPrefix bool = true err error = nil line, ln []byte ) for isPrefix && err == nil { line, isPrefix, err = r.ReadLine() ln = append(ln, line...) } return string(ln), err }
用法範例
使用Readln 函數,我們可以從檔案中讀取行並將其列印到標準輸出:
f, err := os.Open(fi) if err != nil { fmt.Println("error opening file= ", err) os.Exit(1) } r := bufio.NewReader(f) s, e := Readln(r) for e == nil { fmt.Println(s) s, e = Readln(r) }
這種方法避免了手動將位元組數組轉換為字串的需要,簡化了從readline 獲取字串的過程Go中的函數。
以上是如何在 Go 中有效率地將一行讀入字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!