Maison > développement back-end > Golang > Pourquoi Scanf échoue-t-il lors de la deuxième entrée dans Go sous Windows ?

Pourquoi Scanf échoue-t-il lors de la deuxième entrée dans Go sous Windows ?

DDD
Libérer: 2024-10-26 11:14:29
original
638 Les gens l'ont consulté

Why Does Scanf Fail on Second Input in Go on 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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal