In Go stellt die Standardbibliothek Low-Level-Rohfunktionen für Readline-Operationen bereit, die Byte-Arrays zurückgeben. Gibt es eine bequemere Methode, um einen String aus einer Readline-Funktion zu erhalten?
Idiomatische Lösung
Der idiomatische Ansatz, um in Go eine Readline in einen String umzuwandeln, ist die Verwendung von bufio. Leserstruktur. Die Readln()-Funktion gibt eine Zeile (ohne den nachgestellten Zeilenumbruch n) vom eingabegepufferten Lesegerät zurück.
import ( "bufio" "fmt" "os" ) 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 } func main() { 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) } }
Diese Funktion liest Zeilen aus einer Datei, entfernt das Zeilenumbruchzeichen (n) und gibt jede Zeile aus die Konsole.
Das obige ist der detaillierte Inhalt vonWie lese ich effizient eine Zeile aus einer Datei als String in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!