Heim >Backend-Entwicklung >Golang >Wie streame ich Tastenanschläge an einen Kanal ohne Newline-Anforderung?

Wie streame ich Tastenanschläge an einen Kanal ohne Newline-Anforderung?

Linda Hamilton
Linda HamiltonOriginal
2024-10-31 05:34:30765Durchsuche

How to Stream Keystrokes to a Channel without a Newline Requirement?

Eingabe-Tastenanschlag-Streaming an einen Kanal ohne Newline-Anforderung

In die Standardeingabe (stdin) eingegebene Tastenanschläge werden normalerweise gepuffert, d. h. sie werden nur gesendet zu einem Kanal, wenn ein Zeilenumbruchzeichen eingegeben wird. In bestimmten Situationen kann es jedoch wünschenswert sein, jeden Tastendruck direkt an den Kanal zu senden, ohne auf eine neue Zeile warten zu müssen.

Anfänglicher Ansatz und seine Nachteile

Der anfängliche Code Die in der Frage bereitgestellte Funktion, die dazu gedacht ist, Tastenanschläge an einen Kanal zu senden, nutzte den bufio.NewReader(os.Stdin)-Reader mit reader.ReadByte(). Diese Methode blockiert, bis ein Zeilenumbruchzeichen eingegeben wird, und liefert nicht das gewünschte Ergebnis einer sofortigen Tastendruckübertragung.

Grundlegendes zur gepufferten Eingabe

Stdin ist normalerweise standardmäßig zeilengepuffert. Dies bedeutet, dass die Eingabe für das Programm erst dann verfügbar ist, wenn eine neue Zeile eingegeben wird. Dieses Verhalten gilt nicht nur für Go, sondern ist eine plattformspezifische Einstellung.

Alternative Lösungen

  • Ncurses: Ncurses ist eine Bibliothek das plattformunabhängige Terminalhandhabungsfunktionen bietet. Es kann verwendet werden, um stdin so zu konfigurieren, dass es sich ungepuffert verhält.
  • Go-Termbox: Go-Termbox ist ein leichtes Paket, das auch die ungepufferte Verarbeitung von stdin-Eingaben ermöglicht.
  • Low-Level-Programmierung: Das Schreiben von C-Bindungen für Termios oder die direkte Verwendung von Go-Systemaufrufen kann eine manuelle Steuerung der Standardpufferung ermöglichen, dieser Ansatz ist jedoch stark plattformspezifisch und erfordert möglicherweise spezielle Kenntnisse.
  • Plattformspezifische Überlegungen: Die Windows-Verarbeitung von gepufferten stdin kann sich von der anderer Plattformen unterscheiden. Informationen zu plattformspezifischen Implementierungen finden Sie im Quellcode von ncurses oder termbox.

Das obige ist der detaillierte Inhalt vonWie streame ich Tastenanschläge an einen Kanal ohne Newline-Anforderung?. 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