Maison  >  Article  >  développement back-end  >  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
DDDoriginal
2024-10-26 11:14:29558parcourir

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>

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!

Déclaration:
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