ホームページ >バックエンド開発 >Golang >Enterを押さずにGoで単一の文字を入力するにはどうすればよいですか?

Enterを押さずにGoで単一の文字を入力するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-14 09:54:12783ブラウズ

How to Get Single Character Input in Go Without Pressing Enter?

Go で Enter キーを押さずに文字入力を取得する

Go で文字入力を受け取った後に Enter キーを押さないようにするには、次の方法を利用できます。

  1. 入力を無効にするバッファリング:
    コマンド exec.Command("stty", "-F", "/dev/tty", "cbreak", "min", "1").Run() を実行して入力を無効にしますバッファリング。これにより、プログラムはキーを押すとすぐに文字を読み取ることができます。
  2. Suppress Echo
    コマンドを実行 exec.Command("stty", "-F", "/dev /tty", "-echo").Run() を使用して、入力した文字の表示を抑制します。 screen.
  3. 単一バイトの読み取り
    標準入力から単一バイト (文字) を読み取るには、os.Stdin.Read(b) を使用します。これは、ユーザーが文字を入力した後に Enter キーを押さなくても機能します。

  4. 次のコードは、このアプローチの実装方法を示しています。

    package main
    
    import (
        "fmt"
        "os"
        "os/exec"
    )
    
    func main() {
        // disable input buffering
        exec.Command("stty", "-F", "/dev/tty", "cbreak", "min", "1").Run()
        // do not display entered characters on the screen
        exec.Command("stty", "-F", "/dev/tty", "-echo").Run()
    
        var b []byte = make([]byte, 1)
        for {
            os.Stdin.Read(b)
            fmt.Println("I got the byte", b, "("+string(b)+")")
        }
    }

このソリューションは、C# の Console.ReadKey() と同様の機能を提供します。ユーザーが Enter キーを押すのを待たずに 1 文字を入力します。

以上がEnterを押さずにGoで単一の文字を入力するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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