Maison > Article > développement back-end > Pourquoi Scanf échoue-t-il sous Windows et comment puis-je le réparer avec bufio ?
Résolution des problèmes de Scanf dans Go sous Windows
La fonction Scanf dans Go est connue pour ses complications potentielles, en particulier sur les systèmes Windows. Lors de l'exécution d'un programme qui utilise Scanf deux fois, le problème survient lorsque la deuxième requête d'entrée n'est pas enregistrée, ce qui entraîne la fin abrupte de la fonction.
Pour résoudre ce problème, il est recommandé d'utiliser le package bufio, qui propose un moyen plus convivial de gérer les opérations d’entrée et de sortie. Le code ci-dessous illustre l'alternative bufio :
<code class="go">func credentials() (string, string) { reader := bufio.NewReader(os.Stdin) // Initialize a bufio Reader fmt.Print("Enter Username: ") username, _ := reader.ReadString('\n') // Read the username, discarding any errors fmt.Print("Enter Password: ") password, _ := reader.ReadString('\n') // Read the password return strings.TrimSpace(username), strings.TrimSpace(password) // Remove trailing newline characters }</code>
La principale différence ici est l'utilisation de bufio.NewReader(), qui permet une gestion des entrées plus structurée. La fonction ReadString() lit les entrées de l'utilisateur jusqu'au caractère délimiteur spécifié ('n' dans ce cas), ce qui permet une récupération plus cohérente des entrées sur différents systèmes d'exploitation.
En utilisant cette approche basée sur bufio, vous pouvez contournez les pièges potentiels de Scanf et assurez une gestion fiable des entrées, que votre programme soit exécuté sur Windows ou Mac.
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!