ホームページ >バックエンド開発 >Golang >タブ処理を含む C の getchar() 機能を Go で実現するにはどうすればよいですか?

タブ処理を含む C の getchar() 機能を Go で実現するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-27 09:39:11361ブラウズ

How Can I Achieve C's getchar() Functionality, Including Tab Handling, in Go?

C の getchar に類似した Go 関数

C プログラミングでは、getchar() 関数が文字入力処理によく使用されます。この関数は、ユーザーからの 1 回のキーストロークを待ち、その ASCII 値を返します。高度な端末アプリケーションの場合、この機能はオートコンプリートなどの機能に不可欠になります。ただし、Go には、タブ押しの処理に対応する getchar() に直接相当するものはありません。

Go の文字入力へのアプローチ

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() の制限

次の点に注意することが重要です。 getchar() は、文字を入力した後に Enter キーを押す必要があるため、タブの処理には理想的ではありません。この動作は、タブのオートコンプリートに期待される機能と適切に一致しません。

代替アプローチ

オートコンプリートを効果的に実装するには、他のオプションを検討する必要があります:

  • ncurses バインディングを使用する: 人気のあるターミナルである ncurses で利用できる Go バインディングがあります処理ライブラリは、単一キーストローク入力処理のための getch() のような関数を提供します。
  • カスタム ソリューションの作成: 独自の Go 実装を作成して、生の入力とキーストロークを処理できます。動作を完全に制御できます。
  • Use os.Exec: を使用して外部コマンドを実行できます。 getchar() と同様の機能を提供する stty や jLine などの os.Exec。

結論

Go には C の getchar() に正確に類似したものはありませんが、特定の要件に応じて、さまざまなテクニックを活用して同様の機能を実現できます。 ncurses バインディングの使用、カスタム ソリューションの作成、または os.Exec の利用のいずれを選択する場合でも、目標は Go アプリケーションに効果的なキーストロークとタブ処理を実装することです。

以上がタブ処理を含む C の getchar() 機能を Go で実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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