改行なしでチャネルに直接キーストロークを入力
Go では、標準入力 (stdin) はデフォルトでラインバッファリングされます。これは、キーストロークがすぐにチャネルに送信されないことを意味します。代わりに、改行文字が入力されるまで保持されます。この制限を克服するために、改行を必要とせずにキーストロークを読み取り、チャネルに送信する方法を次に示します。
<code class="go">func chars() <-chan byte { ch := make(chan byte) reader := bufio.NewReader(os.Stdin) go func() { for { char, err := reader.ReadByte() if err != nil { log.Fatal(err) } ch <- char } }() return ch }</code>
ただし、stdin 行バッファリングは Go に固有のものではなく、プラットフォーム全体のデフォルトです。 。非バッファー入力の場合は、プラットフォーム固有のソリューションが必要です。 1 つのオプションは、ncurses または go-termbox パッケージを使用することです。あるいは、termios または Go システムコール (Linux の場合) を使用して手動入力処理を実装することもできます。 Windows の実装には、ncurses または termbox のソース コードを調べる必要があります。
以上がGo で改行を使用せずにキーストロークをチャネルに直接読み取るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。