Heim  >  Artikel  >  Backend-Entwicklung  >  Umgang mit ungültigen Benutzereingaben in Go: Stdin und Alternativen löschen

Umgang mit ungültigen Benutzereingaben in Go: Stdin und Alternativen löschen

DDD
DDDOriginal
2024-10-28 09:04:30640Durchsuche

How to Handle Invalid User Input in Go: Flushing Stdin and Alternatives

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:

  1. Verwendung von fmt.Scanln(): fmt.Scanln() liest eine Eingabezeile, einschließlich Leerzeichen und Zeilenumbrüche. Es verbraucht die gesamte Zeile und macht ein explizites Leeren überflüssig.
<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>
  1. Benutzerdefinierte Eingabeverarbeitung: Erstellen Sie eine benutzerdefinierte Funktion zum Lesen und Validieren von Benutzereingaben, was aufwändig ist und Verwerfen ungültiger Einträge, bis eine gültige Eingabe vorliegt.
<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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn