ホームページ  >  記事  >  バックエンド開発  >  Golang STDIN 入力で Enter キーと Backspace キーを検出する方法は?

Golang STDIN 入力で Enter キーと Backspace キーを検出する方法は?

DDD
DDDオリジナル
2024-11-26 03:21:13257ブラウズ

How to Detect Enter and Backspace Keys in Golang STDIN Input?

Golang STDIN 入力で特殊キー (Enter、Backspace) を検出する方法

Go で標準入力からユーザー入力を読み取るときのデフォルトの動作行末文字 (「Enter」キーなど) が押されるまで、すべての文字をキャプチャすることです。 「Enter」や「Backspace」などの特別なキーを検出して特定のアクションを実行するには、プログラム内でこれらのキーのバイト表現を解釈する方法を見つける必要があります。

提供された元のコードでは、ユーザーをキャプチャします。ループ内の入力:

for {
    input += string(b)
}

変数 b は、標準入力から一度に 1 バイトを読み取るために使用されるサイズ 1 のバイト配列です。特別なキーを識別するには、これらのキーがバイトとしてどのように表されるかを理解する必要があります。

たとえば、「enter」キーはバイト値 10 (改行) を生成し、「backspace」キーはバイト値 10 (改行) を生成します。バイト値 127 (POSIX システムの場合)、または 8 (バックスペース)。

これらの特殊キーを検出するには、より高度なキーを使用できます。アプローチ:

package main

import (
    "fmt"
    "os"
    "term"
)

func main() {
    err := term.Init()
    if err != nil {
        panic(err)
    }

    defer term.Close()

    for {
        ev := term.PollEvent()

        switch ev.Type {
        case term.EventKey:
            // Check for special keys
            switch ev.Key {
            case term.KeyEnter:
                fmt.Println("Enter pressed")
            case term.KeyBackspace:
                fmt.Println("Backspace pressed")
            }
        }
    }
}

この更新されたコードでは:

  • 端末イベントを処理するために用語ライブラリを使用します。
  • ev.Type をチェックして、キーが押されました。
  • どのキーが押されたかを識別するために ev.Key をチェックします。

このアプローチを使用すると、「Enter」や「Backspace」などの特殊キーを処理し、必要に応じてカスタム アクションを実行できるようになります。

以上がGolang STDIN 入力で Enter キーと Backspace キーを検出する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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