首頁 > 後端開發 > Golang > 如何在不按 Enter 的情況下從 Go 中的控制台輸入讀取單一字元?

如何在不按 Enter 的情況下從 Go 中的控制台輸入讀取單一字元?

DDD
發布: 2024-12-15 08:10:12
原創
929 人瀏覽過

How to Read Single Characters from Console Input in Go Without Pressing Enter?

在Go 中不使用Enter 鍵讀取字元

問題

當使用者與命令列應用程式互動時,按鍵通常需要他們按鍵Enter 鍵提交輸入。但是,某些場景需要無需 Enter 鍵即可立即識別字元。在 Windows 系統的 Go 中如何實現這一點?

解決方案

對於Windows 系統,您可以使用以下步驟停用輸入緩衝並隱藏螢幕上輸入的字元:

1. // disable input buffering
exec.Command("stty", "-F", "/dev/tty", "cbreak", "min", "1").Run()
2. // do not display entered characters on the screen
exec.Command("stty", "-F", "/dev/tty", "-echo").Run()
登入後複製

使用這些命令後,您可以使用以下代碼來讀取字符,而無需按Enter:

var b []byte = make([]byte, 1)
for {
    os.Stdin.Read(b)
    fmt.Println("I got the byte", b, "("+string(b)+")")
}
登入後複製

當您運行時這個程序,它會顯示一條訊息,提示用戶按任意鍵退出。按任意鍵都會觸發 os.Stdin.Read(b) 調用,該調用將返回按下的字元並將其顯示在螢幕上。

以上是如何在不按 Enter 的情況下從 Go 中的控制台輸入讀取單一字元?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板