"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Quelles sont les causes \ "FMT.Scanln NEWline \" Erreur et comment le résoudre?

Quelles sont les causes \ "FMT.Scanln NEWline \" Erreur et comment le résoudre?

Publié le 2025-02-06
Parcourir:777

What Causes \

fmt.scanln attend

Lorsque vous utilisez fmt.scanln dans Go, on peut rencontrer l'erreur: "fmt.scanln newline attendu." La compréhension de cette erreur et de ses implications est cruciale pour le débogage et l'écriture de code robuste.

Comportement de fmt.scan vs fmt.scanln

fmt.scan lit des valeurs d'espace séparées à l'espace. À partir de l'entrée standard, traitant Newlines comme des caractères d'espace. Cela signifie qu'il continuera d'analyser l'entrée jusqu'à ce que tous les arguments soient remplis ou qu'une erreur se produise. D'un autre côté, FMT.Scanln se lit également à partir de l'entrée standard mais s'attend à un caractère Newline comme point de terminaison. Toute entrée après cela ne sera pas analysée.

Exemple

Dans le code GO fourni, le problème se pose lorsque vous utilisez fmt.scanln pour lire une chaîne s. L'entrée comprend un caractère Newline, qui déclenche la fin de l'entrée pour fmt.scanln. Cependant, les caractères d'entrée suivants "Everybody Loves Ice Cream" sont toujours présents et sont consommés par le FMT.Scan ultérieur. Cela provoque l'erreur, car fmt.scan attend une nouvelle ligne à la fin de l'entrée.

alternatives

pour lire une ligne de texte, y compris les espaces et se terminant par une nouvelleLine , envisagez d'utiliser la méthode de lecture de Bufio.reader:

import "bufio"

func main() {
    reader := bufio.NewReader(os.Stdin)
    line, err := reader.ReadString('\n')
}

Conclusion

Comprendre les comportements distincts de fmt.scan et fmt.scanln est important pour prévenir les erreurs et écrire du code qui s'aligne sur les attentes. Lors de la lecture d'une ligne de texte, des alternatives comme Bufio.reader et ReadString fournissent des solutions plus explicites et efficaces.

Déclaration de sortie Cet article est reproduit sur: 1729685100 S'il y a une contrefaçon, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3