Maison > développement back-end > Golang > Comment vider l'entrée standard (Stdin) dans Go en cas d'entrées invalides ?

Comment vider l'entrée standard (Stdin) dans Go en cas d'entrées invalides ?

Linda Hamilton
Libérer: 2024-10-29 02:32:30
original
343 Les gens l'ont consulté

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

Vinage de l'entrée standard (Stdin) dans Go

Dans Go, lorsque vous utilisez fmt.Scanf() pour lire les entrées de l'utilisateur, il est crucial de gérer les entrées non valides pour éviter les problèmes de boucle. Un défi courant est l’incapacité d’effacer le tampon d’entrée après une entrée invalide, ce qui entraîne une analyse incorrecte des entrées suivantes. Cela peut être résolu en vidant Stdin.

fmt.Scanln()

Une méthode pour résoudre ce problème consiste à utiliser fmt.Scanln(), qui lit un fichier complet ligne de l’entrée. Il consomme l'entrée restante après le spécificateur de format spécifié, éliminant ainsi le besoin d'une boucle explicite.

<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>
Copier après la connexion

Utilisation de io.Scanf()

Alternativement, io.Scanf () peut être utilisé pour lire un format spécifique à partir de l'entrée, même s'il est incomplet. Si l'entrée ne correspond pas au format, les caractères restants sont laissés dans le tampon d'entrée. Pour vider le tampon après une telle erreur, utilisez :

<code class="go">reader.Reset(reader.Bytes())</code>
Copier après la connexion

où reader est l'objet io.Reader.

Autres considérations

Si aucune fonction intégrée ne convient, envisagez d'utiliser une fonction personnalisée qui lit et rejette en permanence les entrées jusqu'à ce qu'une nouvelle ligne soit atteinte. Cette approche garantit que toutes les entrées restantes sont effacées du tampon.

N'oubliez pas qu'une gestion appropriée des entrées non valides est essentielle pour des interactions utilisateur robustes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal