Go言語でコマンドラインツールを作るときに入力を受け取るインターフェースでオプションや標準入力で受け付けることはあると思いますが、パイプで渡すことも考慮されているとクールなツールになるなと思っています。 標準入力の受け取り それぞれの実装方法は簡単です。 インタラクティブ var stdin string fmt.Scan(&stdin) fmt.Println(stdin) インタラクティブに標準入力からデータを受け取るには fmt.Scan で入力待ちをします。このとき入力した値が渡した変数に格納されます。 パイプ body, err := ioutil.ReadAll(os.Stdin) fmt.Println(string(body)) パイプで渡ってきたものは os.Stdin というファイルディスクリプタにデータが入っているので、ここから取得します。 インタラクティブかパイプを