」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何確定 Go 中的輸入是否透過管道傳輸?

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

發佈於2024-12-11
瀏覽:350

How to Determine if Input is Piped in Go?

確定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