Maison >développement back-end >Golang >Pourquoi Scanf échoue-t-il lors de la deuxième entrée dans Go sous Windows ?
Erreur d'utilisation de Scanf dans GOLang sous Windows
La fonction Scanf dans GOLang peut présenter un problème lorsque vous tentez d'obtenir deux fois la saisie de l'utilisateur. La première entrée est récupérée avec succès, mais la fonction se termine brusquement lors de la deuxième tentative sur les systèmes Windows. Ce comportement ne se produit pas sur macOS.
<code class="go">func credentials() (string, string) { var username string var password string fmt.Print("Enter Username: ") fmt.Scanf("%s", &username) fmt.Print("Enter Password: ") fmt.Scanf("%s", &password) return username, password }</code>
Solution :
Scanf est particulier dans son utilisation des espaces comme séparateurs, ce qui le rend quelque peu difficile à utiliser. Bufio offre une alternative supérieure qui simplifie le processus.
<code class="go">func credentials() (string, string) { reader := bufio.NewReader(os.Stdin) fmt.Print("Enter Username: ") username, _ := reader.ReadString('\n') fmt.Print("Enter Password: ") password, _ := reader.ReadString('\n') return strings.TrimSpace(username), strings.TrimSpace(password) // Remove trailing newline character }</code>
Ce code modifié résout le problème et fonctionne de manière transparente sur Windows et macOS.
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!