以下の内容はhttps://devlights.hatenablog.com/entry/2024/09/18/073000より取得しました。


Goメモ-470 (標準入力からデータが渡ってきているかチェック)

関連記事

GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ

概要

以下、自分用のメモです。よく忘れるので、ここにメモメモ。。。

たまにコマンドラインアプリを作っていて、標準入力からデータが渡ってきているかをチェックしたいときがあります。

やり方としては 標準入力のStatを取って、キャラクタデバイスになっているかどうかをチェックするだけです。

サンプル

package main

import (
    "errors"
    "log"
    "os"
)

func main() {
    log.SetFlags(0)

    if err := run(); err != nil {
        log.Fatal(err)
    }
}

func run() error {
    //
    // 標準入力からデータが渡されているかどうかのチェック
    //
    stat, err := os.Stdin.Stat()
    if err != nil {
        return err
    }

    if (stat.Mode() & os.ModeCharDevice) != 0 {
        return errors.New("データが渡されていません。標準入力からデータを入力してください。")
    }

    log.Println("OK")

    return nil
}

実行すると以下のようになります。

$ task
task: [default] go run main.go
データが渡されていません。標準入力からデータを入力してください。
exit status 1
task: [default] echo helloworld | go run main.go
OK
task: [default] echo helloworld > test.txt
task: [default] go run main.go < test.txt
OK
task: [default] rm -f test.txt

参考情報

Goのおすすめ書籍


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。




以上の内容はhttps://devlights.hatenablog.com/entry/2024/09/18/073000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14