Problème :Lors de l'utilisation de fmt.Scanf() pour obtenir une entrée utilisateur, il peut devenir difficile de gérer efficacement les entrées non valides. Si un utilisateur saisit des caractères non numériques, la boucle continue de s'itérer, créant une expérience indésirable.
Résolution :
Pour résoudre ce problème, il est crucial de vider stdin (entrée standard) après chaque demande d'entrée. Ce faisant, tous les caractères invalides restants dans le tampon d'entrée sont supprimés, garantissant que la demande d'entrée suivante commence par une table rase.
Solution utilisant fmt.Scanln :
La fonction fmt.Scanln peut être utilisée pour lire une chaîne depuis stdin et gérer automatiquement les caractères de nouvelle ligne. En utilisant fmt.Scanln, la boucle peut être simplifiée sans nécessiter un vidage explicite de stdin :
<code class="go">package main import ( "fmt" ) func main() { fmt.Println("Please enter an integer: ") // Read in an integer var userI int _, err := fmt.Scanln(&userI) if err != nil { fmt.Printf("Error: %s", err.Error()) return } fmt.Println(userI) }</code>
Solutions alternatives :
En l'absence d'un Fonction de vidage stdin, des solutions alternatives peuvent être utilisées :
Conclusion :
Bien qu'il n'y ait pas de fonction de vidage stdin intégrée dans Go, des techniques telles que l'utilisation de fmt.Scanln ou des solutions alternatives peuvent gérer efficacement les entrées non valides et maintenir une boucle conviviale.
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!