Heim > Artikel > Backend-Entwicklung > Wie kann ich Tastenanschläge ohne Zeilenumbruch in Go direkt in einen Kanal einlesen?
Tastenanschläge direkt in den Kanal ohne Zeilenumbruch eingeben
In Go ist die Standardeingabe (stdin) standardmäßig zeilengepuffert. Dies bedeutet, dass Tastenanschläge nicht sofort an einen Kanal gesendet werden; Stattdessen werden sie gehalten, bis ein Zeilenumbruchzeichen eingegeben wird. Um diese Einschränkung zu überwinden, erfahren Sie hier, wie Sie Tastenanschläge lesen und an einen Kanal senden können, ohne dass ein Zeilenumbruch erforderlich ist:
<code class="go">func chars() <-chan byte { ch := make(chan byte) reader := bufio.NewReader(os.Stdin) go func() { for { char, err := reader.ReadByte() if err != nil { log.Fatal(err) } ch <- char } }() return ch }</code>
Die stdin-Zeilenpufferung ist jedoch nicht spezifisch für Go, sondern eine plattformweite Standardeinstellung . Für ungepufferte Eingaben sind plattformspezifische Lösungen erforderlich. Eine Möglichkeit besteht darin, die Pakete ncurses oder go-termbox zu verwenden. Alternativ können Sie die manuelle Eingabeverarbeitung mit Termios oder Go-Systemaufrufen (für Linux) implementieren. Die Windows-Implementierung erfordert die Erkundung des Ncurses- oder Termbox-Quellcodes.
Das obige ist der detaillierte Inhalt vonWie kann ich Tastenanschläge ohne Zeilenumbruch in Go direkt in einen Kanal einlesen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!