Sonderschlüssel in Go von Stdin lesen
Beim Lesen von Benutzereingaben von Stdin in Go ist es oft notwendig, Sonderschlüssel wie „ „Enter“ oder „Backspace“ für bestimmte Befehle oder Bearbeitungsvorgänge. Um dies zu erreichen, untersuchen wir einen geeigneten Ansatz zur Interpretation dieser Sonderschlüssel.
Im bereitgestellten Codeausschnitt liest das Programm kontinuierlich stdin und hängt die Eingabe an einen String an. Um bestimmte Schlüssel zu erkennen, müssen wir deren entsprechende Byte-Array- oder String-Darstellung ermitteln.
Um diese Werte zu finden, können wir eine Bibliothek wie termbox-go verwenden. Es bietet eine ereignisgesteuerte Schnittstelle, die es uns ermöglicht, Tastendrücke und die zugehörigen Codes zu erfassen.
Betrachten Sie den folgenden Code mit termbox-go:
package main import ( "fmt" term "github.com/nsf/termbox-go" ) func main() { err := term.Init() if err != nil { panic(err) } defer term.Close() fmt.Println("Press any key to see their ASCII code or press ESC button to quit") keyPressListenerLoop: for { switch ev := term.PollEvent(); ev.Type { case term.EventKey: switch ev.Key { case term.KeyEsc: break keyPressListenerLoop case term.KeyEnter: // Handle enter key press case term.KeyBackspace: // Handle backspace key press // Add other special keys here } case term.EventError: panic(ev.Err) } } }
Dieser Code richtet einen Ereignis-Listener ein Verwenden Sie termbox-go und warten Sie auf Tastendruckereignisse. Beim Drücken einer Taste prüft der Code deren Typ und Tastencode. Basierend auf dem Tastencode kann eine benutzerdefinierte Logik implementiert werden, um bestimmte Tasten wie „Enter“ oder „Rücktaste“ zu verarbeiten. Zum Beispiel:
case term.KeyEnter: fmt.Println("Enter key pressed") case term.KeyBackspace: fmt.Println("Backspace key pressed")
Alternativ ist ein einfacherer Ansatz verfügbar, wenn die einzige Anforderung darin besteht, einen „Enter“-Tastendruck zu erkennen:
package main import ( "fmt" "os" "bufio" ) func main() { fmt.Println("Press ESC button or Ctrl-C to exit this program") fmt.Println("Press Enter to continue") for { consoleReader := bufio.NewReaderSize(os.Stdin, 1) fmt.Print("> ") input, _ := consoleReader.ReadByte() ascii := input // ESC = 27 and Ctrl-C = 3 if ascii == 27 || ascii == 3 { fmt.Println("Exiting...") os.Exit(0) } if ascii == 10 { // Enter key has ASCII value 10 fmt.Println("Enter key pressed") } } }
Dieser Code verwendet den consoleReader von bufio, um a zu lesen Einzelnes Zeichen nach dem anderen, sodass der Tastendruck „Eingabe“ erkannt werden kann.
Durch die Nutzung dieser Ansätze können Entwickler Sondertasten effektiv handhaben Eingaben in Go-Programmen beim Lesen von stdin.
Das obige ist der detaillierte Inhalt vonWie kann ich Sondertasten (wie Enter und Backspace) anhand der Standardeingabe in Go erkennen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!