首頁 >後端開發 >Golang >如何在 Go 中從文件中慣用地讀取行?

如何在 Go 中從文件中慣用地讀取行?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-13 00:31:09338瀏覽

How to Idiomatically Read Lines from a File in Go?

Go 中慣用的行讀取

儘管 Go的標準庫中提供了低階位元組數組返回行讀取函數,但更簡單的方法存在更慣用的方法來從讀取行獲取字串

解決方案

要從檔案無縫逐行讀取,可以使用Readln(*bufio.Reader) 函數。它從提供的 bufio.Reader 結構中檢索一行(不包括換行符)。

這是示範Readln 用法的程式碼片段:

// Readln returns a single line (without the ending \n)
// from the input buffered reader.
// An error is returned iff there is an error with the
// buffered 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
}

此函數可用於讀取檔案中的每一行:

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)
}

此程式碼從指定檔案中逐行讀取並將每行列印到標準輸出。

以上是如何在 Go 中從文件中慣用地讀取行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn