Heim >Backend-Entwicklung >Golang >Können Sie der Go-Eingabeschleife „bufio.Scanner' ohne eine bedingte Prüfung entkommen?
Entkommen Sie der Eingabeschleife ohne Bedingungsprüfung
In Go können Sie mit dem bufio.Scanner Eingaben von der Konsole Zeile für Zeile lesen. Die standardmäßige Scan-Funktion geht jedoch automatisch zum nächsten Token über, was möglicherweise zu einer Endlosschleife führt, wenn keine explizite Unterbrechungsbedingung vorliegt.
In der Dokumentation heißt es, dass Scan „false“ zurückgibt, wenn das Ende der Eingabe erreicht wird. Bedeutet das, dass Sie die bedingte Prüfung zum Ausbrechen aus der Schleife überspringen können?
Fehlinterpretation des Dokuments
Leider haben Sie die Dokumentation falsch interpretiert. Die vom Scanner verwendete Standardaufteilungsfunktion ist ScanLines, die jede Textzeile als separates Token zurückgibt.
Verhalten von ScanLines
ScanLines hat zwei wichtige Verhaltensweisen:
Breaking the Loop
Daher signalisiert eine Leerzeile allein noch nicht das Ende der Eingabe. Die Schleife wird nur unterbrochen, wenn Sie eine Dateiende-Bedingung (EOF) erreichen, die normalerweise durch Aktionen wie das Drücken von Strg-D ausgelöst wird.
Lösung
Um zu entkommen In der Eingabeschleife ohne if-Klausel müssen Sie entweder:
Allerdings wird allgemein empfohlen, die bedingte Prüfung der Einfachheit halber beizubehalten und potenzielle Grenzfälle zu vermeiden.
Das obige ist der detaillierte Inhalt vonKönnen Sie der Go-Eingabeschleife „bufio.Scanner' ohne eine bedingte Prüfung entkommen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!