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