Heim >Backend-Entwicklung >Golang >Wie kann ich Tastenanschläge ohne Zeilenumbruch in Go direkt in einen Kanal einlesen?

Wie kann ich Tastenanschläge ohne Zeilenumbruch in Go direkt in einen Kanal einlesen?

DDD
DDDOriginal
2024-10-30 07:44:02828Durchsuche

How Can I Read Keystrokes Directly into a Channel Without a Newline in Go?

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!

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