Go 中的非阻塞字元輸入
使用Go 的標準庫並執行操作可以實現不按Enter 鍵從標準輸入讀取字元系統指令。
對於 Windows 用戶,可以使用 syscall 套件使用非規範輸入模式。但是,這種方法依賴平台,可能不適合跨平台開發。
基於UNIX 的解決方案
提供的解決方案適用於基於UNIX 的系統,並且停用輸入緩衝和字元回顯:
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)+")") } }
此程式將從標準輸入中重複讀取字符,直到終止。 cbreak 模式停用行緩衝,而 -echo 標誌阻止輸入的字元顯示在螢幕上。
注意:
此解決方案假設您正在使用支援非規範輸入模式的終端模擬器。如果您的終端不支持,您可能需要相應調整代碼。
以上是Go中如何實現非阻塞字元輸入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!