Maison > développement back-end > Golang > le corps du texte

Pourquoi fmt.Scanln de Go génère-t-il une erreur « Nouvelle ligne attendue » ?

DDD
Libérer: 2024-10-24 04:27:31
original
254 Les gens l'ont consulté

Why Does Go's fmt.Scanln Give an

Erreur fmt.Scanln : nouvelle ligne attendue

Lors de l'utilisation de la fonction fmt.Scanln dans Go, vous pouvez rencontrer une erreur de « nouvelle ligne attendue » . Cela se produit lorsque l'entrée contient un caractère de nouvelle ligne avant le délimiteur attendu (généralement un espace). Pour résoudre ce problème, examinons le comportement de fmt.Scan et fmt.Scanln.

fmt.Scan lit les valeurs séparées par des espaces à partir de l'entrée standard, en traitant les nouvelles lignes comme des espaces. Il attribue ces valeurs aux arguments correspondants, renvoyant le nombre d'éléments analysés avec succès.

fmt.Scanln se comporte de la même manière mais arrête l'analyse à une nouvelle ligne. Il est essentiel que l'entrée se termine par une nouvelle ligne ou un EOF pour se terminer avec succès.

Pour illustrer cela, considérons l'entrée suivante :

123
123.456
everybody loves ice cream
Copier après la connexion

Lors de l'utilisation de fmt.Scan, la sortie sera :

read 1 integer:  123
read 1 float64:  123.456
read 1 string:  everybody
Error:  Scan: expected newline
Copier après la connexion

fmt.Scan interprète "tout le monde aime la glace" comme deux chaînes, ce qui entraîne l'erreur.

Cependant, si vous utilisez fmt.Scanln pour la même entrée, la sortie sera :

read 1 integer:  123
read 1 float64:  123.456
read 1 string:  everybody loves ice cream
Copier après la connexion

fmt.Scanln reconnaît la nouvelle ligne comme délimiteur et analyse correctement la ligne entière comme un argument de chaîne unique.

Pour lire une ligne qui se termine par un caractère de nouvelle ligne dans Allez, vous pouvez utiliser bufio.Reader et sa méthode ReadString :

line, err := buffer.ReadString('\n')
Copier après la connexion

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
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!