Heim >Backend-Entwicklung >Golang >Wie erhalte ich die Eingabe einzelner Zeichen in Go, ohne die Eingabetaste zu drücken?

Wie erhalte ich die Eingabe einzelner Zeichen in Go, ohne die Eingabetaste zu drücken?

DDD
DDDOriginal
2024-12-14 09:54:12783Durchsuche

How to Get Single Character Input in Go Without Pressing Enter?

Erhalten von Zeicheneingaben, ohne die Eingabetaste in Go zu drücken

Um zu vermeiden, dass nach der Zeicheneingabe in Go die Eingabetaste gedrückt werden muss, können Sie Folgendes verwenden: Gehen Sie wie folgt vor.

  1. Eingabepufferung deaktivieren:
    Ausführen den Befehl exec.Command("stty", "-F", "/dev/tty", "cbreak", "min", "1").Run(), um die Eingabepufferung zu deaktivieren. Dadurch kann das Programm ein Zeichen sofort lesen, wenn eine Taste gedrückt wird.
  2. Echo unterdrücken
    Führen Sie den Befehl exec.Command("stty", "-F", "/dev" aus /tty", "-echo").Run(), um die Anzeige der eingegebenen Zeichen auf dem Bildschirm zu unterdrücken.
  3. Eine Single lesen Byte
    Verwenden Sie os.Stdin.Read(b), um ein einzelnes Byte (Zeichen) aus der Standardeingabe zu lesen. Dies funktioniert auch dann, wenn der Benutzer nach der Eingabe eines Zeichens nicht die Eingabetaste drückt.
  4. Beispiel
    Der folgende Code veranschaulicht, wie dieser Ansatz implementiert wird:

    package main
    
    import (
        "fmt"
        "os"
        "os/exec"
    )
    
    func main() {
        // disable input buffering
        exec.Command("stty", "-F", "/dev/tty", "cbreak", "min", "1").Run()
        // do not display entered characters on the screen
        exec.Command("stty", "-F", "/dev/tty", "-echo").Run()
    
        var b []byte = make([]byte, 1)
        for {
            os.Stdin.Read(b)
            fmt.Println("I got the byte", b, "("+string(b)+")")
        }
    }

Diese Lösung bietet eine ähnliche Funktionalität wie Console.ReadKey() in C#, indem sie es Ihnen ermöglicht, ein einzelnes Zeichen zu lesen, ohne auf den Benutzer warten zu müssen um die Eingabetaste zu drücken.

Das obige ist der detaillierte Inhalt vonWie erhalte ich die Eingabe einzelner Zeichen 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