ホームページ  >  記事  >  バックエンド開発  >  Go でブロックせずに Stdin のデータを確認するにはどうすればよいですか?

Go でブロックせずに Stdin のデータを確認するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-31 11:16:29659ブラウズ

How to Check for Data in Stdin without Blocking in Go?

Go で標準入力のデータを確認する

Go では、コマンドやパイプラインを操作するときに標準入力 (stdin) と対話することが重要なタスクとなることがよくあります。ただし、プログラムの実行をブロックせずに stdin にデータがあるかどうかを判断するのは難しい場合があります。

os.Stdin ファイル オブジェクトは stdin を表し、Go の他のファイル オブジェクトと同様の機能を備えています。これにより、Stat 関数を活用して、サイズなどの stdin に関する情報を収集できるようになります。

stdin にデータが含まれているかどうかを確認するには、次のコードを使用してサイズを確認できます。

<code class="go">func main() {
    file := os.Stdin
    fi, err := file.Stat()
    if err != nil {
        fmt.Println("file.Stat()", err)
    }
    size := fi.Size()
    if size > 0 {
        fmt.Printf("%v bytes available in Stdin\n", size)
    } else {
        fmt.Println("Stdin is empty")
    }
}</code>

このコードを実行可能ファイルにコンパイルすると、標準入力にパイプされた入力を処理するフィルターとして使用できます。たとえば、コマンド echo test | を実行します。 ./executable はコンソールに「5 bytes available in Stdin」と出力し、stdin にデータが含まれていることを示します。逆に、何も入力せずに ./executable を実行すると、「標準入力が空です」と表示されます。

このアプローチにより、開発者はブロックせずに標準入力のデータを確認し、それに応じてプログラムのロジックを進めることができます。これは、パイプラインを操作するとき、または標準入力からのユーザー入力を処理するときに特に便利です。

以上がGo でブロックせずに Stdin のデータを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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