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