Heim >Backend-Entwicklung >Golang >Wie lösche ich die Standardeingabe (Stdin) in Go, wenn es um ungültige Eingaben geht?

Wie lösche ich die Standardeingabe (Stdin) in Go, wenn es um ungültige Eingaben geht?

Linda Hamilton
Linda HamiltonOriginal
2024-10-29 02:32:30320Durchsuche

How to Flush Standard Input (Stdin) in Go When Dealing with Invalid Inputs?

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!

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