確定Go 中的管道輸入
了解命令是否透過管道傳輸在Go 應用程式中至關重要,尤其是在處理來自各種來源的數據時。本文探討如何確定命令是否透過管道傳輸,使開發人員能夠相應地調整他們的程式碼。
解
Go 提供了 os.Stdin.Stat( ) 函數擷取與標準輸入關聯的檔案資訊。此資訊包括檔案模式,該模式指示輸入是來自終端還是管道。以下程式碼片段示範如何使用os.Stdin.Stat() 來實現此目的:
<code class="go">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") } }</code>
當命令通過管道傳遞時, fi.Mode() 和os.ModeCharDevice 的計算結果為0,表示輸入不是來自字元設備(例如終端)。相反,非零值表示輸入來自字元設備。
這種方法提供了一種區分管道輸入和非管道輸入的可靠方法,允許開發人員相應地自訂應用程式的行為。
以上是如何確定 Go 中的輸入是否透過管道傳輸?的詳細內容。更多資訊請關注PHP中文網其他相關文章!