Maison  >  Article  >  développement back-end  >  Comment gérer les entrées utilisateur non valides dans Go : vidage de Stdin et alternatives

Comment gérer les entrées utilisateur non valides dans Go : vidage de Stdin et alternatives

DDD
DDDoriginal
2024-10-28 09:04:30640parcourir

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

Comprendre la consommation d'entrée dans Go : rinçage et alternatives

Lors de l'interaction avec les utilisateurs via le terminal, la gestion des entrées non valides peut être difficile. Dans Go, l'utilisation de fmt.Scanf() pour lire les entrées peut rencontrer des problèmes lorsque les utilisateurs saisissent des valeurs non entières. En effet, fmt.Scanf() ne consomme pas la ligne entière, laissant des caractères résiduels qui peuvent interférer avec les entrées ultérieures.

Pour résoudre ce problème, une option consiste à vider explicitement le tampon d'entrée après une entrée non valide. . Cependant, Go ne fournit pas de méthode directe pour vider Stdin.

Approches alternatives :

  1. Utilisation de fmt.Scanln() : fmt.Scanln() lit une ligne d'entrée, y compris les espaces et les nouvelles lignes. Il consomme toute la ligne, éliminant ainsi le besoin de vidage explicite.
<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. Gestion des entrées personnalisées : Créez une fonction personnalisée pour lire et valider les entrées utilisateur, en consommant et en supprimant les entrées invalides jusqu'à ce qu'une entrée valide soit obtenue.
<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>

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!

Déclaration:
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