Maison >développement back-end >Golang >prendre des entrées avec des espaces en cours
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.
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.
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)
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!