Heim >Backend-Entwicklung >Golang >Wie lese ich einzelne Zeichen aus der Konsoleneingabe in Go, ohne die Eingabetaste zu drücken?

Wie lese ich einzelne Zeichen aus der Konsoleneingabe in Go, ohne die Eingabetaste zu drücken?

DDD
DDDOriginal
2024-12-15 08:10:12925Durchsuche

How to Read Single Characters from Console Input in Go Without Pressing Enter?

Lesen eines Zeichens ohne Eingabetaste in Go

Problem

Wenn ein Benutzer mit einer Befehlszeilenanwendung interagiert, muss er oft eine Taste drücken müssen die Eingabetaste drücken, um ihre Eingabe zu übermitteln. Einige Szenarien erfordern jedoch eine sofortige Zeichenerkennung ohne die Eingabetaste. Wie kann dies in Go für Windows-Systeme erreicht werden?

Lösung

Für Windows-Systeme können Sie die Eingabepufferung deaktivieren und eingegebene Zeichen auf dem Bildschirm ausblenden, indem Sie die folgenden Schritte ausführen:

1. // disable input buffering
exec.Command("stty", "-F", "/dev/tty", "cbreak", "min", "1").Run()
2. // do not display entered characters on the screen
exec.Command("stty", "-F", "/dev/tty", "-echo").Run()

Wenn diese Befehle vorhanden sind, können Sie den folgenden Code verwenden, um Zeichen zu lesen, ohne die Eingabetaste zu drücken:

var b []byte = make([]byte, 1)
for {
    os.Stdin.Read(b)
    fmt.Println("I got the byte", b, "("+string(b)+")")
}

Wenn Sie dieses Programm ausführen, wird es ausgeführt Zeigt eine Meldung an, die den Benutzer auffordert, zum Beenden eine beliebige Taste zu drücken. Durch Drücken einer beliebigen Taste wird der Aufruf os.Stdin.Read(b) ausgelöst, der das gedrückte Zeichen zurückgibt und auf dem Bildschirm anzeigt.

Das obige ist der detaillierte Inhalt vonWie lese ich einzelne Zeichen aus der Konsoleneingabe in Go, ohne die Eingabetaste zu drücken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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