ホームページ >バックエンド開発 >Golang >C の `getchar()` と同等の Go 関数を実装するにはどうすればよいですか?

C の `getchar()` と同等の Go 関数を実装するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-18 17:34:11840ブラウズ

How to Implement a Go Function Equivalent to C's `getchar()`?

Go 関数 C の getchar

getchar() と同等の C 関数を使用すると、ユーザーはコンソールから 1 文字を読み取ることができます。この機能は、コンソール補完などのアプリケーションに適しています。 Go では、bufio パッケージを使用して同様の関数を実装できます。

Go getchar() 実装

package main

import (
    "bufio"
    "fmt"
    "os"
)

func main() {
    reader := bufio.NewReader(os.Stdin)
    input, _ := reader.ReadString('\n')
    fmt.Printf("Input Character: %v", string([]byte(input)[0]))
}

getchar() の制限

ただし、タブ補完の場合はgetchar()ができない場合があります理想的な解決策。入力をキャプチャするために Enter キーを押す必要がある getchar() とは異なり、ncurses の getch()、readline、または jLine などの関数は、Enter キーを必要とせずに 1 つのキーストロークをキャプチャするように設計されています。

getchar() によるタブ補完

タブ補完については、次の代替案を検討してください。ソリューション:

  • ncurses/readline バインディングを使用する: たとえば、https://code.google.com/p/goncurses/ のようなライブラリは ncurses バインディングを提供します。
  • 独自のソリューションを実装します: 次のようなリソースを利用します。 https://play.golang.org/p/plwBIIYiqG を開始点として使用します。
  • 外部コマンドを呼び出す: を使用して stty や jLine などのコマンドを実行します。 os.Exec.

参照:

  • https://groups.google.com/forum/?fromgroups=#!topic/golang -nuts/zhBE5MH4n-Q
  • https://groups.goog le.com/forum/?fromgroups=#!topic/golang-nuts/S9AO_kHktiY
  • https://groups.google.com/forum/?fromgroups=#!topic/golang-nuts/icMfYF8wJCk

以上がC の `getchar()` と同等の Go 関数を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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