Heim >Backend-Entwicklung >Golang >Wie lösche ich die Standardeingabe (Stdin) in Go, wenn es um ungültige Eingaben geht?
Standardeingabe (Stdin) in Go löschen
In Go ist es bei der Verwendung von fmt.Scanf() zum Lesen von Benutzereingaben von entscheidender Bedeutung Behandeln Sie ungültige Eingaben, um Schleifenprobleme zu vermeiden. Eine häufige Herausforderung besteht darin, dass der Eingabepuffer nach einem ungültigen Eintrag nicht geleert werden kann, was dazu führt, dass nachfolgende Eingaben falsch analysiert werden. Dies kann durch Leeren von Stdin behoben werden.
fmt.Scanln()
Eine Methode zur Behebung dieses Problems ist die Verwendung von fmt.Scanln(), das eine vollständige Datei liest Zeile aus der Eingabe. Es verbraucht die verbleibende Eingabe nach dem angegebenen Formatbezeichner, sodass keine explizite Schleife erforderlich ist.
<code class="go">func someFunc() { fmt.Printf("Please enter an integer: ") // Read in an integer var i int _, err := fmt.Scanln(&i) if err != nil { fmt.Printf("Error: %s", err.Error()) // If int read fails, read as string and forget var discard string fmt.Scanln(&discard) return } fmt.Printf("Input contained %d", i) }</code>
Verwendung von io.Scanf()
Alternativ io.Scanf () kann verwendet werden, um ein bestimmtes Format aus der Eingabe zu lesen, auch wenn es unvollständig ist. Wenn die Eingabe nicht mit dem Format übereinstimmt, verbleiben die restlichen Zeichen im Eingabepuffer. Um den Puffer nach einem solchen Fehler zu löschen, verwenden Sie:
<code class="go">reader.Reset(reader.Bytes())</code>
wobei „reader“ das io.Reader-Objekt ist.
Andere Überlegungen
If Wenn keine integrierte Funktion geeignet ist, sollten Sie die Verwendung einer benutzerdefinierten Funktion in Betracht ziehen, die kontinuierlich Eingaben liest und verwirft, bis eine neue Zeile erreicht wird. Dieser Ansatz stellt sicher, dass alle verbleibenden Eingaben aus dem Puffer gelöscht werden.
Denken Sie daran, dass die ordnungsgemäße Behandlung ungültiger Eingaben für robuste Benutzerinteraktionen unerlässlich ist.
Das obige ist der detaillierte Inhalt vonWie lösche ich die Standardeingabe (Stdin) in Go, wenn es um ungültige Eingaben geht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!