ホームページ >バックエンド開発 >Golang >Enterを押さずにGoのコンソール入力から単一の文字を読み取る方法は?

Enterを押さずにGoのコンソール入力から単一の文字を読み取る方法は?

DDD
DDDオリジナル
2024-12-15 08:10:12926ブラウズ

How to Read Single Characters from Console Input in Go Without Pressing Enter?

Go で Enter キーを使用せずに文字を読み取る

問題

ユーザーがコマンドライン アプリケーションを操作するとき、多くの場合キーを押す必要があります。 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。