在Go中对字符串进行readline的惯用方式是什么?标准库中提供的原始函数看起来很底层,它们返回字节数组。有没有以更简单的方式从readline函数中获取字符串的内置方法?

最佳答案

我写了一种方法,可以轻松地从文件中读取每一行。 Readln(* bufio.Reader)函数从基础bufio.Reader结构返回一行(sans\n)。

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

您可以使用Readln读取文件中的每一行。以下代码读取文件中的每一行,并将每一行输出到stdout。
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->字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6141604/

10-12 05:17