首頁 >後端開發 >Golang >如何偵測 Golang STDIN 輸入中的 Enter 和 Backspace 鍵?

如何偵測 Golang STDIN 輸入中的 Enter 和 Backspace 鍵?

DDD
DDD原創
2024-11-26 03:21:13326瀏覽

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

如何偵測Golang STDIN 輸入中的特殊鍵(Enter、Backspace)

從Go 中的stdin 讀取使用者輸入時,預設行為是捕捉所有字符,直到按下行尾字符(例如“enter”鍵)。為了偵測「enter」或「backspace」等特殊鍵並執行特定操作,我們需要找到一種方法來解釋程式中這些鍵的位元組表示。

在提供的原始程式碼中,它捕獲了用戶循環輸入:

for {
    input += string(b)
}

變數b 是一個大小為1 的位元組數組,用於從stdin 一次讀取一個字節。為了識別特殊鍵,我們需要了解這些鍵如何表示為位元組。

例如,「enter」鍵產生一個位元組值 10(換行),而「backspace」鍵產生一個位元組值位元組值 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn