Ich habe ein Taschenrechnerprogramm geschrieben, das den Benutzer nach der Eingabe eines Ausdrucks fragt, das Ergebnis ausgibt und erneut zur Eingabe des nächsten Ausdrucks auffordert.
Aber als ich fmt.Scanln() zum Lesen einer Zeile (mit Leerzeichen wie Leerzeichen und Tabulatorzeichen) verwendete, passierte das Problem!
Es hörte auf zu lesen, als es auf ein Leerzeichen traf (ja, kein Zeilenumbruch, sondern ein Leerzeichen).
Zum Beispiel:
Eingabe: 2 3,5(5)
Erhalten: 2
Aber ich habe noch Schlimmeres zu sagen!
Die restlichen Zeichen in der Eingabe waren noch vorhanden und wenn wir die Scanln()-Funktion erneut aufrufen, werden sie gelesen.
Es gibt eine weitere Funktion namens Scanf() im FMT-Paket.
Dieser Typ ist anders!
Es nimmt Eingaben basierend auf Formatspezifizierern entgegen und speichert sie in den von uns angegebenen Variablen.
Code:
text := "" fmt.Println("Enter expression:") for { var temp rune fmt.Scanf("%c", &temp) if temp == '\n' { break } text += string(temp) } fmt.Printf("You entered:\n %v", text)
Erklärung:
1.Druckt „Ausdruck eingeben:“
2.Eine Schleife beginnt
3. Jetzt nimmt die Schleife Eingaben vom Benutzer entgegen, Zeichen für Zeichen (Rune für Rune in go)
5.Und in jeder Iteration nehmen wir diese Rune und fügen sie hinzu oder hängen sie an unsere Textvariable an.
6.Wenn es ein „n“ liest, unterbricht es die Schleife und wir erhalten die Eingabezeile innerhalb der Variablen text.
7. Hier können Runen auch Leerzeichen sein.
Im wahrsten Sinne des Wortes lautet es also sogar das „n“.
(Das Lesen von Leerzeichen ist eine Ausnahme für Scanf("%c",&var_name) und genau das, was wir wollen!)
Hinweis: Es löst auch das Problem, das auftritt, wenn wir mehr als eine Zeile lesen. Ich meine, wir bekommen unerwartete Eingaben oder Verhaltensweisen, wenn wir mehr als eine Zeile lesen (ich weiß es nicht genau). Grund!).
Aber da wir hier Zeichen für Zeichen lesen, einschließlich „n“ (in die temporäre Variable), werden alle diese Fehler beseitigt!
Das obige ist der detaillierte Inhalt vonEingaben mit Leerzeichen in go entgegennehmen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!