Maison > développement back-end > Golang > Quelles sont les causes de l'erreur « fmt.Scanln Expected Newline » et comment la résoudre ?

Quelles sont les causes de l'erreur « fmt.Scanln Expected Newline » et comment la résoudre ?

Susan Sarandon
Libérer: 2024-10-24 02:07:02
original
1008 Les gens l'ont consulté

What Causes

Attente fmt.Scanln

Lors de l'utilisation de fmt.Scanln dans Go, on peut rencontrer l'erreur : "fmt.Scanln attendu une nouvelle ligne." Comprendre cette erreur et ses implications est crucial pour le débogage et l'écriture d'un code robuste.

Comportement de fmt.Scan par rapport à 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 caractères d'espacement. Cela signifie qu'il continuera à analyser les entrées jusqu'à ce que tous les arguments soient remplis ou qu'une erreur se produise. D'un autre côté, fmt.Scanln lit également à partir de l'entrée standard mais attend un caractère de nouvelle ligne comme point de terminaison. Toute entrée ultérieure ne sera pas analysée.

Exemple

Dans le code Go fourni, le problème survient lors de l'utilisation de fmt.Scanln pour lire une chaîne s. L'entrée inclut un caractère de nouvelle ligne, qui déclenche la fin de l'entrée pour fmt.Scanln. Cependant, les caractères d'entrée suivants "tout le monde aime la glace" sont toujours présents et sont consommés par le fmt.Scan suivant. Cela provoque l'erreur, car fmt.Scan attend une nouvelle ligne à la fin de la saisie.

Alternatives

Pour lire une ligne de texte comprenant des espaces et se terminant par une nouvelle ligne , pensez à utiliser la méthode ReadString de bufio.Reader :

<code class="go">import "bufio"

func main() {
    reader := bufio.NewReader(os.Stdin)
    line, err := reader.ReadString('\n')
}</code>
Copier après la connexion

Conclusion

Comprendre les comportements distincts de fmt.Scan et fmt.Scanln est important pour éviter les erreurs et écrire un code qui correspond aux attentes. Lors de la lecture d'une ligne de texte, des alternatives comme bufio.Reader et ReadString fournissent des solutions plus explicites et efficaces.

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
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