Maison > développement back-end > Golang > prendre des entrées avec des espaces en cours

prendre des entrées avec des espaces en cours

Susan Sarandon
Libérer: 2024-12-06 19:26:12
original
872 Les gens l'ont consulté

taking input with spaces in go

Contexte

J'écrivais un programme de calculatrice qui demande à l'utilisateur une expression d'entrée, imprime le résultat et demande à nouveau l'expression suivante.

Problème

Mais, quand j'ai utilisé fmt.Scanln() pour lire une ligne (avec des espaces comme espace et tabulation), la chose s'est produite !

Il a arrêté la lecture lorsqu'il a rencontré un caractère espace (oui ! pas une nouvelle ligne mais un caractère espace).

Par exemple :
Entrée : 2 3.5(5)
Obtenu : 2

Mais j'ai encore pire à dire !

Le reste des caractères dans l'entrée était toujours là et si nous appelons à nouveau la fonction Scanln(), elle les lit.

Solution:

Il existe une autre fonction appelée Scanf() dans le package fmt.
Ce type est différent !
Il prend des entrées basées sur les spécificateurs de format et les stocke dans les variables que nous avons données.
Code :

    text := ""

    fmt.Println("Enter expression:")
    for {
        var temp rune
        fmt.Scanf("%c", &temp)
        if temp == '\n' {
            break
        }
        text += string(temp)
    }
    fmt.Printf("You entered:\n %v", text)
Copier après la connexion

Explication :
1.Imprime « Entrez l'expression : »
2.une boucle démarre
3.Maintenant, la boucle prend les entrées de l'utilisateur, char par char (rune par rune en go)
5.Et à chaque itération, nous prenons cette rune et l'ajoutons ou l'ajoutons à notre variable texte.
6.Lorsqu'il lit un 'n', il rompt la boucle et nous obtenons la ligne d'entrée à l'intérieur de la variable text.
7.Ici, la rune peut également être des caractères d'espace.
Donc, littéralement, il lit même le « n ».

(La lecture des caractères d'espace est une exception pour Scanf("%c",&var_name) et c'est ce que nous voulons !)

Remarque : Cela résout également le problème que nous rencontrons lorsque nous lisons plus d'une ligne. Je veux dire, nous obtenons une entrée ou un comportement inattendu lorsque nous lisons plus d'une ligne (je ne connais pas la valeur exacte raison !).
Mais ici, puisque nous lisons char par char, y compris également 'n' (dans la variable temporaire), éliminera toutes ces erreurs !

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 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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal