C プログラミングでは、getchar() 関数が文字入力処理によく使用されます。この関数は、ユーザーからの 1 回のキーストロークを待ち、その ASCII 値を返します。高度な端末アプリケーションの場合、この機能はオートコンプリートなどの機能に不可欠になります。ただし、Go には、タブ押しの処理に対応する getchar() に直接相当するものはありません。
Go で同様の機能を実現するには、bufio を使用できます。 .NewReader() および os.Stdin パッケージ。以下に例を示します。
package main import ( "bufio" "fmt" "os" ) func main() { reader := bufio.NewReader(os.Stdin) input, _ := reader.ReadString('\n') fmt.Printf("Input Char Is : %v", string([]byte(input)[0])) }
このコードは、ユーザーからの入力行を読み取り、最初の文字の ASCII 値を出力します。特にタブの押下を検出するには、入力の最初の要素がタブ文字 (U 0009) であるかどうかを確認できます。
次の点に注意することが重要です。 getchar() は、文字を入力した後に Enter キーを押す必要があるため、タブの処理には理想的ではありません。この動作は、タブのオートコンプリートに期待される機能と適切に一致しません。
オートコンプリートを効果的に実装するには、他のオプションを検討する必要があります:
Go には C の getchar() に正確に類似したものはありませんが、特定の要件に応じて、さまざまなテクニックを活用して同様の機能を実現できます。 ncurses バインディングの使用、カスタム ソリューションの作成、または os.Exec の利用のいずれを選択する場合でも、目標は Go アプリケーションに効果的なキーストロークとタブ処理を実装することです。
以上がタブ処理を含む C の getchar() 機能を Go で実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。