ユーザーがコマンドライン アプリケーションを操作するとき、多くの場合キーを押す必要があります。 Enter キーを押して入力を送信します。ただし、一部のシナリオでは、Enter キーを使用せずに即座に文字を認識する必要があります。 Windows システムの Go ではどのようにこれを実現できますか?
Windows システムの場合、次の手順を使用して入力バッファリングを無効にし、入力した文字を画面から非表示にすることができます:
1. // disable input buffering exec.Command("stty", "-F", "/dev/tty", "cbreak", "min", "1").Run() 2. // do not display entered characters on the screen exec.Command("stty", "-F", "/dev/tty", "-echo").Run()
これらのコマンドを配置すると、次のコードを使用して Enter キーを押さずに文字を読み取ることができます。
var b []byte = make([]byte, 1) for { os.Stdin.Read(b) fmt.Println("I got the byte", b, "("+string(b)+")") }
このプログラムを実行すると、任意のキーを押して終了するようにユーザーに促すメッセージが表示されます。任意のキーを押すと os.Stdin.Read(b) 呼び出しがトリガーされ、押された文字が返されて画面に表示されます。
以上がEnterを押さずにGoのコンソール入力から単一の文字を読み取る方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。