Heim >Backend-Entwicklung >Golang >Wie kann ich in Go effizient eine Zeile in einen String einlesen?

Wie kann ich in Go effizient eine Zeile in einen String einlesen?

DDD
DDDOriginal
2024-12-21 11:39:11685Durchsuche

How Can I Efficiently Read a Line into a String in Go?

Effizientes Lesen einer Zeile in einen String in Go

Die Go-Standardbibliothek bietet Low-Level-Funktionen zum Lesen von Eingaben und gibt stattdessen Byte-Arrays zurück Saiten. Zur Vereinfachung der Verwendung untersuchen wir einen alternativen Ansatz zum direkten Abrufen einer Zeichenfolge aus einer Readline-Funktion.

Benutzerdefinierte Readln-Funktion

Um Readline-Vorgänge zu vereinfachen, erstellen wir eine benutzerdefinierte Readln-Funktion, die eine einzelne Zeile (mit Ausnahme des Zeilenumbruchzeichens) aus einer bereitgestellten Datei liest bufio.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
}

Beispielverwendung

Mit der Readln-Funktion können wir Zeilen aus einer Datei lesen und auf stdout drucken:

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

Dieser Ansatz vermeidet die Notwendigkeit, Byte-Arrays manuell in Strings zu konvertieren, wodurch der Prozess des Abrufens von Strings aus Readline optimiert wird Funktionen in Go.

Das obige ist der detaillierte Inhalt vonWie kann ich in Go effizient eine Zeile in einen String einlesen?. 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