首頁  >  文章  >  後端開發  >  如何在 Go 中不阻塞地檢查 Stdin 中的資料?

如何在 Go 中不阻塞地檢查 Stdin 中的資料?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-31 11:16:29576瀏覽

How to Check for Data in Stdin without Blocking in Go?

使用 Go 檢查 Stdin 中的資料

在 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中文網其他相關文章!

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