Heim >Backend-Entwicklung >Golang >Wie lese ich effizient eine Zeile aus einer Datei als String in Go?

Wie lese ich effizient eine Zeile aus einer Datei als String in Go?

Barbara Streisand
Barbara StreisandOriginal
2024-12-08 03:18:11596Durchsuche

How to Efficiently Read a Line from a File as a String in Go?

readline zu String in Go

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn