Heim >Backend-Entwicklung >Golang >Warum verarbeitet `reader.ReadString('\n')` Zeilenumbruchtrennzeichen in Go nicht zuverlässig?
Warum read.ReadString Trennzeichen nicht richtig verarbeitet
Im bereitgestellten Go-Programm tritt das Problem auf, wenn read.ReadString(' n'), um eine Textzeile zu lesen. Wenn der Benutzer „Alice“ oder „Bob“ eingibt, enthält der Eingabetext ein zusätzliches Zeilenumbruchzeichen, was zu einer Nichtübereinstimmung mit dem angegebenen Trennzeichen ('n') führt.
Lösung: ReadLine kürzen oder verwenden
Um dieses Problem zu beheben, können Sie nach dem Lesen der Zeichenfolge entweder den Leerraum (einschließlich des Zeilenumbruchzeichens) abschneiden oder „reader.ReadLine()“ verwenden. direkt.
Leerzeichen mit Strings abschneiden.TrimSpace
package main import ( "bufio" "fmt" "os" "strings" ) func main() { reader := bufio.NewReader(os.Stdin) fmt.Print("Who are you? \n Enter your name: ") text, _ := reader.ReadString('\n') if aliceOrBob(strings.TrimSpace(text)) { fmt.Printf("Hello, ", text) } else { fmt.Printf("You're not allowed in here! Get OUT!!") } }
Mit ReadLine
package main import ( "bufio" "fmt" "os" ) func main() { reader := bufio.NewReader(os.Stdin) fmt.Print("Who are you? \n Enter your name: ") text, _, _ := reader.ReadLine() if aliceOrBob(string(text)) { fmt.Printf("Hello, ", text) } else { fmt.Printf("You're not allowed in here! Get OUT!!") } }
Durch die richtige Handhabung der Eingabezeichenfolge kann das Programm nun korrekt erkennen, ob der Name des Benutzers „Alice“ oder „Bob“ ist, und antworten entsprechend.
Das obige ist der detaillierte Inhalt vonWarum verarbeitet `reader.ReadString('\n')` Zeilenumbruchtrennzeichen in Go nicht zuverlässig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!