首頁 >後端開發 >Golang >如何將擊鍵串流傳輸到通道而不需要換行?

如何將擊鍵串流傳輸到通道而不需要換行?

Linda Hamilton
Linda Hamilton原創
2024-10-31 05:34:30763瀏覽

How to Stream Keystrokes to a Channel without a Newline Requirement?

輸入按鍵串流傳輸到沒有換行要求的通道

輸入到標準輸入(stdin) 的擊鍵通常會被緩衝,這意味著它們只會被發送當輸入換行符時到通道。然而,在某些情況下,可能需要將每個擊鍵直接傳送到頻道而不等待換行符號。

初始方法及其缺點

初始代碼問題中提供的,旨在將擊鍵發送到通道,使用bufio.NewReader(os.Stdin) 閱讀器和reader.ReadByte()。此方法會阻塞,直到輸入換行符,無法提供立即擊鍵傳輸所需的結果。

了解緩衝輸入

預設情況下,Stdin 通常是行緩衝的。這意味著在輸入換行符之前,程式無法立即使用輸入。此行為並非 Go 獨有,而是特定於平台的設定。

替代解決方案

  • Ncurses: Ncurses 是一個函式庫提供獨立於平台的終端處理能力。它可用於將標準輸入配置為以非緩衝方式運行。
  • Go-Termbox:Go-Termbox 是一個輕量級包,也支援非緩衝標準輸入輸入處理。
  • 低階程式設計:為 termios 編寫 C 綁定或直接使用 Go 系統呼叫可以允許手動控制 stdin 緩衝,但這種方法是高度特定於平台的,可能需要專業知識。
  • 平台特定的注意事項: Windows 對緩衝 stdin 的處理可能與其他平台不同。請參閱 ncurses 或 termbox 的原始程式碼以了解特定於平台的實作。

以上是如何將擊鍵串流傳輸到通道而不需要換行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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