ホームページ >バックエンド開発 >Golang >Go で入力がパイプされているかどうかを確認するにはどうすればよいですか?

Go で入力がパイプされているかどうかを確認するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-05 04:52:02724ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。