在 Go 中,在使用命令和管道時,與標準輸入 (stdin) 互動通常是一項關鍵任務。然而,在不阻塞程序執行的情況下確定 stdin 是否有數據可能具有挑戰性。
os.Stdin 檔案物件代表 stdin,它擁有與 Go 中其他檔案物件類似的功能。這使我們能夠利用 Stat 函數來收集有關 stdin 的信息,包括其大小。
要確定 stdin 是否包含數據,我們可以使用以下程式碼檢查其大小:
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")
}
}
當此程式碼編譯為可執行檔時,它可以用作過濾器來處理透過管道傳輸到 stdin 的輸入。例如,執行指令 echo test | ./executable 會在控制台列印“5 bytes available in Stdin”,表示 stdin 包含資料。相反,在沒有任何輸入的情況下執行 ./executable 將顯示「Stdin 為空」。
這種方法允許開發人員在不阻塞的情況下檢查 stdin 中的數據,並相應地繼續執行程式的邏輯。當使用管道或處理來自 stdin 的使用者輸入時,它特別有用。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3