Heim > Backend-Entwicklung > Golang > Eingaben mit Leerzeichen in go entgegennehmen

Eingaben mit Leerzeichen in go entgegennehmen

Susan Sarandon
Freigeben: 2024-12-06 19:26:12
Original
812 Leute haben es durchsucht

taking input with spaces in go

Kontext

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.

Problem

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.

Lösung:

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)
Nach dem Login kopieren

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!

Quelle:dev.to
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage