Heim >Backend-Entwicklung >Golang >Scan vs. Scanln in Go: Das erwartete Newline-Verhalten verstehen
fmt.Scanln erwarteter Newline-Fehler: Das Verhalten verstehen
Die fmt.Scanln-Funktion in Go löst einen Fehler aus, wenn danach ein fehlender Newline-Fehler auftritt Lesen einer Eingabezeile. Dieses Verhalten ist im Gegensatz zur getline-Methode in C beabsichtigt und wird durch die spezifische Implementierung von fmt.Scanln gesteuert.
Scan vs. Scanln
fmt.Scan liest Eingaben durch Leerzeichen getrennte Werte und speichert sie in den angegebenen Argumenten. Zeilenumbrüche werden als Leerzeichen behandelt. Im Gegensatz dazu stoppt fmt.Scanln das Scannen bei einer neuen Zeile, und nach dem letzten gescannten Element muss eine neue Zeile stehen. Dieser Unterschied ergibt sich aus der beabsichtigten Verwendung:
Der Fehler
Bei Verwendung von fmt.Scanln ohne eine neue Zeile nach der Eingabe tritt ein Fehler auf ausgelöst, weil die Funktion einen Zeilenumbruch erwartet, um die Zeile zu beenden. Die Fehlermeldung „Scan: erwartete neue Zeile“ weist auf diesen Zustand hin.
Vergleich mit getline in C
Die getline-Methode in C liest eine Eingabezeile und speichert sie es in einer bereitgestellten String-Variablen. Im Gegensatz zu fmt.Scanln erfordert getline keinen Zeilenumbruch am Ende der Eingabe. Dieser Unterschied ist auf die Tatsache zurückzuführen, dass getline normalerweise zum Lesen ganzer Zeilen verwendet wird, während fmt.Scanln zum Scannen bestimmter Werte innerhalb einer Zeile konzipiert ist.
Alternative zum Zeilenlesen
Wenn Sie eine komplette Eingabezeile in Go lesen müssen, können Sie die ReadString-Methode des bufio.Reader-Typs verwenden:
<code class="go">line, err := buffer.ReadString('\n')</code>
Diese Methode liest die Eingabe, bis ein Zeilenumbruchzeichen gefunden wird, und speichert sie die Zeile in der Zeilenvariablen.
Wenn Sie das Verhalten von fmt.Scanln und seinen Unterschied zur getline-Methode von C verstehen, können Sie diese Funktionen effektiv für die Eingabeanalyse in Ihren Go-Programmen verwenden.
Das obige ist der detaillierte Inhalt vonScan vs. Scanln in Go: Das erwartete Newline-Verhalten verstehen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!