Go言語で以下の頻出操作を行うスニペットを書いた。 ファイルをバイト列として読む ファイルの内容をチャンネルで別のゴルーチンに渡す(そこで標準出力する) チャンネルのクローズを検出しゴルーチンの終了処理を適切に行う package main import ( "flag" "fmt" "io" "log" "os" ) func main() { flag.Parse() in_file := flag.Arg(0) f, e := os.Open(in_file) if e != nil { log.Fatal(e) } defer f.Close() ch := make(chan []byte) done := make(chan struct{}) // 標準出力用ゴルーチン起動 go func() { loop: for { select { case b, ok := <-ch