首頁 >後端開發 >Golang >如何確定 Go 中的輸入是否透過管道傳輸?

如何確定 Go 中的輸入是否透過管道傳輸?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-05 04:52:02727瀏覽

How to Determine if Input is Piped in Go?

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

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