確定Go 中的管道輸入
了解命令是否透過管道傳輸在Go 應用程式中至關重要,尤其是在處理來自各種來源的數據時。本文探討如何確定命令是否透過管道傳輸,使開發人員能夠相應地調整他們的程式碼。
解決方案
Go 提供了 os.Stdin.Stat( ) 函數檢索與標準輸入關聯的文件資訊。此資訊包括檔案模式,該模式指示輸入是來自終端還是管道。以下程式碼片段示範如何使用 os.Stdin.Stat() 來實現此目的:
package main
import (
"fmt"
"os"
)
func main() {
fi, _ := os.Stdin.Stat()
if (fi.Mode() & os.ModeCharDevice) == 0 {
fmt.Println("data is from pipe")
} else {
fmt.Println("data is from terminal")
}
}
當指令透過管道傳輸時,fi.Mode() & os.ModeCharDevice 的計算結果為 0,表示輸入不是來自字元設備(例如終端)。相反,非零值表示輸入來自字元設備。
此方法提供了一種區分管道輸入和非管道輸入的可靠方法,允許開發人員相應地自訂應用程式的行為。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3