Liest ein Zeichen von standard-input in Go (ohne drücken der EINGABETASTE)
Möchte ich meine app zeigt:
press any key to exit ...
Und wenn ich gedrückt alle - Taste, beendet es.
Wie kann ich das erreichen?
Hinweis: ich habe gegoogelt aber alles was ich gefunden habe, gebraucht zu drücken geben Sie am Ende. Ich möchte etwas wie Console.ReadKey()
in C#.
Mir läuft MS Windows.
- mögliche Duplikate von Golang ähnlichen Funktion getchar
- Nein, dies ist kein Duplikat. Ich habe gesehen, dass die Frage vor und mit dem code in der Antwort, die Sie noch brauchen, um zu drücken Sie die EINGABETASTE auf stdin.
- Der Falschheit ist allein über die Frage, die nicht über keine Antwort darauf.
- Danke; ich habe den Titel geändert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
termbox-go ist eine Licht-Gewicht-Gehen-native-Paket bietet einige rudimentäre terminal-control. Einschließlich der Möglichkeit, eine Eingabe im raw-Modus (Lesen Sie ein Zeichen in einer Zeit, ohne die Standard-line-buffered-Verhalten).
Es hat auch ziemlich ok, die Kompatibilität zwischen den verschiedenen Systemen.
Und Tastatur erstreckt termbox-gehen, um einige zusätzliche Tastatur-Funktionen wie multi-key shortcuts und Sequenzen.
Dies ist ein minimal-Beispiel für diejenigen, läuft ein UNIX-system:
fmt.Print(string(b))
funktionieren sollte.gehen-termbox ist sehr Schwergewicht. Es will über die gesamte terminal-Fenster. Zum Beispiel, löscht es den Bildschirm beim Start, das kann nicht sein, was Sie wollen.
Lege ich diese zusammen auf OSX. Nur ein winziger getchar():
https://github.com/paulrademacher/climenu/blob/master/getchar.go
Könnten Sie diese Bibliothek verwenden (von mir): https://github.com/eiannone/keyboard
Dies ist ein Beispiel für zu bekommen einem einzigen Tastendruck:
Lesen Sie einen einzelnen Tastendruck von einem terminal in den raw-Modus. Hier ist ein Paket, dass sollten die raw-terminal-Modus auf Ihrem Programm. Haken: es ist nur für Linux.
Versuchen, diese - http://play.golang.org/p/kg-QirlucY.
Nur Lesen aus der
os.Stdin
am Ende derfunc main
SetConsoleMode
. Wenn Sie möchten, "Drücken Sie die EINGABETASTE, um fortzufahren", dannos.Stdin.Read([]byte{0})
ist genug.