Heim > Backend-Entwicklung > Golang > Warum gibt fmt.Scanln von Go den Fehler „Erwarteter Zeilenumbruch' aus?

Warum gibt fmt.Scanln von Go den Fehler „Erwarteter Zeilenumbruch' aus?

DDD
Freigeben: 2024-10-24 04:27:31
Original
330 Leute haben es durchsucht

Why Does Go's fmt.Scanln Give an

fmt.Scanln-Fehler: Erwarteter Zeilenumbruch

Bei Verwendung der fmt.Scanln-Funktion in Go kann es zu einem „erwarteten Zeilenumbruch“-Fehler kommen . Dies tritt auf, wenn die Eingabe ein Zeilenumbruchzeichen vor dem erwarteten Trennzeichen (normalerweise ein Leerzeichen) enthält. Um dieses Problem zu beheben, untersuchen wir das Verhalten von fmt.Scan und fmt.Scanln.

fmt.Scan liest durch Leerzeichen getrennte Werte aus der Standardeingabe und behandelt Zeilenumbrüche als Leerzeichen. Diese Werte werden den entsprechenden Argumenten zugewiesen und die Anzahl der erfolgreich gescannten Elemente zurückgegeben.

fmt.Scanln verhält sich ähnlich, stoppt jedoch den Scanvorgang bei einer neuen Zeile. Entscheidend ist, dass die Eingabe mit einer neuen Zeile oder einem EOF endet, um erfolgreich abgeschlossen zu werden.

Um dies zu veranschaulichen, betrachten Sie die folgende Eingabe:

123
123.456
everybody loves ice cream
Nach dem Login kopieren

Bei Verwendung von fmt.Scan lautet die Ausgabe :

read 1 integer:  123
read 1 float64:  123.456
read 1 string:  everybody
Error:  Scan: expected newline
Nach dem Login kopieren

fmt.Scan interpretiert „jeder liebt Eis“ als zwei Zeichenfolgen, was zu dem Fehler führt.

Wenn Sie jedoch fmt.Scanln für dieselbe Eingabe verwenden, wird die Ausgabe wird sein:

read 1 integer:  123
read 1 float64:  123.456
read 1 string:  everybody loves ice cream
Nach dem Login kopieren

fmt.Scanln erkennt den Zeilenumbruch als Trennzeichen und analysiert die gesamte Zeile korrekt als einzelnes Zeichenfolgenargument.

Um eine Zeile einzulesen, die mit einem Zeilenumbruchzeichen endet Gehen Sie, Sie können bufio.Reader und seine ReadString-Methode verwenden:

line, err := buffer.ReadString('\n')
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum gibt fmt.Scanln von Go den Fehler „Erwarteter Zeilenumbruch' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage