首頁 >後端開發 >Golang >如何在Go中不按回車鍵獲得單一字元輸入?

如何在Go中不按回車鍵獲得單一字元輸入?

DDD
DDD原創
2024-12-14 09:54:12782瀏覽

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. 抑制迴聲
    執行指令exec.Command("stty", "-F", "/dev /tty", "-echo").Run() 禁止在螢幕上顯示輸入的字元。
  3. 閱讀單一內容Byte
    使用 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)+")")
        }
    }

此解決方案提供了與此解決方案中的Console.ReadKey() 類似的功能,允許您讀取單個字符,無需等待用戶按Enter 鍵。

以上是如何在Go中不按回車鍵獲得單一字元輸入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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