Heim >Backend-Entwicklung >Golang >Wie gehe ich mit ungültigen Eingaben um und lösche Standardeingaben nach „fmt.Scanf()' in Go?
Problem: Bei Verwendung von fmt.Scanf() zum Erhalten von Benutzereingaben ist dies möglich Es wird schwierig, mit ungültigen Eingaben effektiv umzugehen. Wenn ein Benutzer nicht numerische Zeichen eingibt, wird die Schleife weiter durchlaufen, was zu einem unerwünschten Erlebnis führt.
Lösung:
Um dieses Problem zu beheben, ist es wichtig, den Inhalt zu leeren stdin (Standardeingabe) nach jeder Eingabeanforderung. Dadurch werden alle verbleibenden ungültigen Zeichen im Eingabepuffer verworfen, wodurch sichergestellt wird, dass die nachfolgende Eingabeanforderung mit einem sauberen Schiefer beginnt.
Lösung mit fmt.Scanln:
Die Funktion fmt.Scanln kann verwendet werden, um eine Zeichenfolge aus stdin zu lesen und automatisch Zeilenumbrüche zu verarbeiten. Durch den Einsatz von fmt.Scanln kann die Schleife vereinfacht werden, ohne dass ein explizites Leeren von stdin erforderlich ist:
<code class="go">package main import ( "fmt" ) func main() { fmt.Println("Please enter an integer: ") // Read in an integer var userI int _, err := fmt.Scanln(&userI) if err != nil { fmt.Printf("Error: %s", err.Error()) return } fmt.Println(userI) }</code>
Alternative Lösungen:
In Ermangelung einer integrierten stdin-Flushing-Funktion, alternative Lösungen können verwendet werden:
Fazit:
Während es in Go keine eingebaute stdin-Flushing-Funktion gibt, können Techniken wie die Verwendung von fmt.Scanln oder Alternative Lösungen können ungültige Eingaben effektiv verarbeiten und eine benutzerfreundliche Schleife aufrechterhalten.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit ungültigen Eingaben um und lösche Standardeingaben nach „fmt.Scanf()' in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!