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 Alice und 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. Das Trennzeichen wird jedoch 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
So beheben Sie dieses Problem , gibt es zwei mögliche Ansätze:
1. Schneiden Sie den Zeilenumbruch ab
Verwenden Sie die Funktion strings.TrimSpace, um alle führenden oder nachgestellten Leerzeichen aus der Eingabezeichenfolge zu entfernen, bevor Sie diese auswerten. Dadurch wird effektiv das Zeilenumbruchzeichen entfernt, das das Problem verursacht hat.
if aliceOrBob(strings.TrimSpace(text)) { fmt.Printf("Hello, ", text) }
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 einzuschließen.
text, _, _ := reader.ReadLine() if aliceOrBob(string(text)) { fmt.Printf("Hello, ", text) }
Erklärung
Der Grund für die Verwendung von string(text) mit ReadLine ist, dass ReadLine ein Byte-Slice zurückgibt, während aliceOrBob ein String-Argument erfordert.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3