Wie kann ich Tastendrücke in einem Go REPL effizient verarbeiten?

Mary-Kate Olsen
Freigeben: 2024-11-28 01:56:13
Original
410 Leute haben es durchsucht

How Can I Handle Keypresses Efficiently in a Go REPL?

Behandlung von Tastendruckeingaben in Go

In Go liest die ReadString-Funktion eine Zeichenfolge aus der Standardeingabe und wartet darauf, dass die Eingabetaste gedrückt wird. Beim Erstellen einer REPL-Anwendung (Read-Eval-Print-Loop) ist es jedoch erforderlich, umgehend auf Tastendruckereignisse zu reagieren.

Alternativer Ansatz

Anstatt sich auf ReadString zu verlassen, sollten Sie die Verwendung von Game-Engines in Betracht ziehen die eine plattformunabhängige Verarbeitung von Tastatureingaben bieten. Eine solche Bibliothek ist die Tastaturbibliothek von Azul3D.

Tastendruck-Ereignisüberwachung

Die Bibliothek bietet einen Tastaturwächter, der den Zustand aller Tasten überwacht. Indem Sie den Beobachter nach der Statuszuordnung abfragen, können Sie feststellen, ob eine bestimmte Taste gedrückt, gedrückt gehalten oder losgelassen wird.

import (
    "github.com/azul3d/keyboard"
)

func main() {
    watcher := keyboard.NewWatcher()
    status := watcher.States()

    for {
        left := status[keyboard.ArrowLeft]
        if left == keyboard.Down {
            // The arrow left key is being held down.
        }
    }
}
Nach dem Login kopieren

Dieser Code durchläuft die Statuszuordnung und erkennt alle Tasten, die derzeit gedrückt sind . Anschließend können Sie je nach gedrückter Taste die entsprechenden Aktionen ausführen.

Das obige ist der detaillierte Inhalt vonWie kann ich Tastendrücke in einem Go REPL effizient verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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