reader.ReadString vs. ReadLine
In Go bietet bufio.Reader zwei Methoden zum Lesen von Text aus einer Eingabequelle: ReadString und ReadLine . Diese Methoden unterscheiden sich darin, wie sie mit dem Newline-Zeichen am Ende einer Zeile umgehen:
ReadString liest eine Zeichenfolge, bis sie auf ein angegebenes Trennzeichen trifft. Standardmäßig ist das Trennzeichen n (Newline), was bedeutet, dass ganze Textzeilen gelesen werden. Das Trennzeichen wird jedoch nicht aus der zurückgegebenen Zeichenfolge entfernt. Im in der Frage erwähnten Code:
text, _ := reader.ReadString('\n')
Die Textvariable enthält die Eingabezeichenfolge einschließlich des Zeilenumbruchzeichens. Wenn also nach „Alice“ oder „Bob“ gesucht wird, führt das Zeilenumbruchzeichen am Ende der Eingabe dazu, dass der Vergleich fehlschlägt.
ReadLine liest eine Textzeile, mit Ausnahme der Newline-Zeichen. Es gibt ein Byte-Slice zurück, das die Zeichen in der Zeile und einen Fehlerwert enthält, der auf aufgetretene Probleme hinweist. Um das Byte-Slice in eine Zeichenfolge umzuwandeln, muss es wie folgt umgewandelt werden:
text, _, _ := reader.ReadLine()
Durch die Verwendung von ReadLine anstelle von ReadString ist das Newline-Zeichen nicht in der Textvariablen enthalten, wodurch das Problem falscher Vergleiche behoben wird .
Eine andere Alternative besteht darin, das Zeilenumbruchzeichen manuell aus der Eingabezeichenfolge abzuschneiden, indem Sie die verwenden strings.TrimSpace-Funktion:
text = strings.TrimSpace(text)
Dadurch werden alle führenden und nachfolgenden Leerzeichen, einschließlich der neuen Zeile, entfernt, um einen sauberen Vergleich zu gewährleisten.
Das obige ist der detaillierte Inhalt vonReadString vs. ReadLine in Go: Wann sollten Sie beide für die Texteingabe verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!