ホームページ > バックエンド開発 > Golang > タブを含む単一文字入力のための C の `getchar()` 機能を Go に実装するにはどうすればよいですか?

タブを含む単一文字入力のための C の `getchar()` 機能を Go に実装するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-30 16:01:13
オリジナル
357 人が閲覧しました

How to Implement C's `getchar()` Functionality for Single Character Input, Including Tab, in Go?

文字入力の取得 Go の C の getchar() に似ています

C の getchar() 関数を使用すると、ユーザーはコンソールから 1 つの文字を入力できます。ただし、Go には、タブの押下を処理する直接同等の機能はありません。オートコンプリート機能を備えたコンソール アプリケーションを開発する場合、これは困難になる可能性があります。

Go と同等

Go で考えられる代替案は、bufio.Reader を使用することです。以下に例を示します。

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]))
}
ログイン後にコピー

bufio.Reader は 1 文字を読み取ることができますが、ユーザーは Enter キーを押して文字を入力する必要があります。タブの押下を検出する場合、これは適切ではありません。

追加の考慮事項

この特定のニーズに対して、C の getchar() はユーザーが Enter キーを押すのを待機するため、適切ではありません。代わりに、代替オプションには以下が含まれます:

  • ncurses/readline バインディングの使用 (例: goncurses)
  • 独自の入力ハンドラーの開発
  • 外部コマンドの実行 (例: stty)使用してos.Exec

参照:

  • [Google グループのディスカッションgetchar()](https://groups.google.com/forum/?fromgroups=#!topic/golang-nuts/zhBE5MH4n-Q)
  • [使用bufio.Reader](https://groups.google.com/forum/?fromgroups=#!topic/golang-nuts/S9AO_kHktiY)
  • [ReadLine パッケージ](https://groups.google.com /forum/?fromgroups=#!topic/golang-nuts/icMfYF8wJCk)

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート