Heim >Backend-Entwicklung >Golang >Umgang mit ungültigen Benutzereingaben in Go: Stdin und Alternativen löschen
Eingabeverbrauch in Go verstehen: Flushing und Alternativen
Bei der Interaktion mit Benutzern über das Terminal kann der Umgang mit ungültigen Eingaben eine Herausforderung darstellen. In Go kann es bei der Verwendung von fmt.Scanf() zum Lesen von Eingaben zu Problemen kommen, wenn Benutzer nicht ganzzahlige Werte eingeben. Dies liegt daran, dass fmt.Scanf() nicht die gesamte Zeile verbraucht und Restzeichen zurücklässt, die die nachfolgende Eingabe beeinträchtigen können.
Um dieses Problem zu beheben, besteht eine Möglichkeit darin, den Eingabepuffer nach einem ungültigen Eintrag explizit zu leeren . Allerdings bietet Go keine direkte Methode zum Löschen von Stdin.
Alternative Ansätze:
<code class="go">fmt.Println("Please enter an integer:") var userI int _, err := fmt.Scanln(&userI) if err != nil { fmt.Println("Sorry, invalid input. Please try again:") }</code>
<code class="go">func GetUserInputInt() int { var userI int for { fmt.Println("Please enter an integer:") _, err := fmt.Scanf("%d", &userI) if err == nil { return userI } fmt.Println("Sorry, invalid input. Please try again:") fmt.Scanln() // Discard invalid input } }</code>
Das obige ist der detaillierte Inhalt vonUmgang mit ungültigen Benutzereingaben in Go: Stdin und Alternativen löschen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!