在 Go 中,與標準輸入 (stdin) 互動通常是使用指令和管道時的關鍵任務。然而,在不阻塞程序執行的情況下確定 stdin 是否有數據可能具有挑戰性。
os.Stdin 檔案物件代表 stdin,它擁有與 Go 中其他檔案物件類似的功能。這使我們能夠利用 Stat 函數來收集有關 stdin 的信息,包括其大小。
要確定stdin 是否包含數據,我們可以使用以下程式碼檢查其大小:
<code class="go">func main() { file := os.Stdin fi, err := file.Stat() if err != nil { fmt.Println("file.Stat()", err) } size := fi.Size() if size > 0 { fmt.Printf("%v bytes available in Stdin\n", size) } else { fmt.Println("Stdin is empty") } }</code>
當此程式碼編譯為可執行檔時,它可以用作過濾器來處理通過管道傳輸到stdin 的輸入。例如,執行指令 echo test | ./executable 會在控制台列印“5 bytes available in Stdin”,表示 stdin 包含資料。相反,在沒有任何輸入的情況下運行./executable 將顯示“Stdin 為空。”
這種方法允許開發人員在不阻塞的情況下檢查stdin 中的數據,並相應地繼續執行程序的邏輯。當使用管道或處理來自標準輸入的使用者輸入時,它特別有用。
以上是如何在 Go 中不阻塞地檢查 Stdin 中的資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!