関連記事
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のおすすめ書籍
過去の記事については、以下のページからご参照下さい。
サンプルコードは、以下の場所で公開しています。