Heim >Backend-Entwicklung >Golang >Warum entfernt „reader.ReadString' nicht das anfängliche Trennzeichen?
reader.ReadString entfernt das anfängliche Trennzeichen nicht
In dem Bemühen, ein Programm zu erstellen, das Benutzer namens Alice oder Bob, einen Entwickler, begrüßt Es ist ein Problem aufgetreten, bei dem selbst legitime Namen eine unerwünschte Reaktion auslösten. Das Programm hat sowohl Alice als auch Bob fälschlicherweise den Zutritt verweigert.
Das Problem
Das Problem ergibt sich aus der Verwendung von reader.ReadString('n') im Programm. Diese Funktion ruft Zeichen ab, bis ein Zeilenumbruchzeichen gefunden wird. Allerdings wird das Trennzeichen nicht automatisch aus der zurückgegebenen Zeichenfolge entfernt, was dazu führt, dass eine zusätzliche neue Zeile in die Eingabe des Benutzers eingefügt wird.
Lösung
Um dieses Problem zu beheben , es gibt zwei mögliche Vorgehensweisen:
1. Schneiden Sie die neue Zeile ab
Verwenden Sie die Funktion strings.TrimSpace, um alle führenden oder nachgestellten Leerzeichen aus der Eingabezeichenfolge zu entfernen, bevor Sie sie auswerten. Dadurch wird das Zeilenumbruchzeichen, das das Problem verursacht hat, effektiv entfernt.
2. Verwenden Sie ReadLine anstelle von ReadString
Alternativ kann die ReadLine-Funktion anstelle von ReadString verwendet werden. ReadLine ruft eine Textzeile ab, ohne das Zeilenumbruchzeichen in die zurückgegebene Zeichenfolge aufzunehmen.
Erklärung
Der Grund für die Verwendung von string(text) mit ReadLine ist folgender ReadLine gibt ein Byte-Slice zurück, während aliceOrBob ein String-Argument erfordert.
Das obige ist der detaillierte Inhalt vonWarum entfernt „reader.ReadString' nicht das anfängliche Trennzeichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!