ホームページ >バックエンド開発 >Golang >改行要件なしでキーストロークをチャネルにストリーミングするにはどうすればよいですか?

改行要件なしでキーストロークをチャネルにストリーミングするにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-31 05:34:30765ブラウズ

How to Stream Keystrokes to a Channel without a Newline Requirement?

改行要件なしのチャネルへの入力キーストローク ストリーミング

標準入力 (stdin) に入力されたキーストロークは通常、バッファリングされます。つまり、送信されるだけです。改行文字が入力されるとチャンネルに転送されます。ただし、特定の状況では、改行を待たずに各キーストロークをチャネルに直接送信することが望ましい場合があります。

初期アプローチとその欠点

初期コード質問で提供されているものは、チャネルにキーストロークを送信することを目的としており、reader.ReadByte() で bufio.NewReader(os.Stdin) リーダーを利用しました。このメソッドは、改行文字が入力されるまでブロックし、即時キーストローク送信の望ましい結果を提供しません。

バッファリングされた入力について

標準入力は通常、デフォルトでラインバッファリングされます。これは、改行が入力されるまでプログラムは入力をすぐには利用できないことを意味します。この動作は Go に固有のものではなく、プラットフォーム固有の設定です。

代替ソリューション

  • Ncurses: Ncurses はライブラリです。プラットフォームに依存しない端末処理機能を提供します。これは、バッファなしで動作するように stdin を構成するために使用できます。
  • Go-Termbox: Go-Termbox は、バッファなしの stdin 入力処理も可能にする軽量パッケージです。
  • 低レベルプログラミング: termios 用の C バインディングの作成または Go の使用syscall を直接使用すると、stdin バッファリングを手動で制御できますが、このアプローチはプラットフォームに非常に固有であり、専門知識が必要になる場合があります。
  • プラットフォーム固有の考慮事項: バッファされた stdin の Windows の処理は、他のプラットフォーム。プラットフォーム固有の実装については、ncurses または termbox のソース コードを参照してください。

以上が改行要件なしでキーストロークをチャネルにストリーミングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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