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 :
<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>
<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!