Go でのノンブロッキング文字入力
Enter を押さずに標準入力から文字を読み取ることは、Go の標準ライブラリと操作を実行することで実現できます。システム コマンド。
Windows ユーザーの場合、非正規入力モードは、システムコールパッケージ。ただし、このアプローチはプラットフォームに依存するため、クロスプラットフォーム開発には適していない可能性があります。
UNIX ベースのソリューション
提供されるソリューションは、UNIX ベースのシステムと入力バッファリングと文字エコーを無効にします:
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)+")") } }
このプログラムは、終了するまで標準入力から繰り返し文字を読み取ります。 cbreak モードは行バッファリングを無効にし、-echo フラグは入力された文字が画面に表示されないようにします。
注:
この解決策は、以下を使用していることを前提としています。非標準入力モードをサポートする端末エミュレータ。お使いの端末がサポートしていない場合は、それに応じてコードを調整する必要がある場合があります。
以上がGo でノンブロッキング文字入力を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。