Go言語でファイルの読み書き

ファイルのオープン、読み出し、書き出しあたりの勉強のためにサンプル書いてみた。
引数1で渡されたファイル名でファイルをオープンし、1行ずつ読みだして、引数2のファイル名に書き出してるだけ。
エラーはほとんど無視で、EOFだけはチェックしている。

package main

import (
	"bufio"
	"flag"
	"io"
	"os"
)

func main() {
	flag.Parse()

	var reader *bufio.Reader
	var writer *bufio.Writer
	var line []byte
	var err error

	// ファイルを読み込みモードでオープン
	read_file, _ := os.OpenFile(flag.Arg(0), os.O_RDONLY, 0600)
	// Readerを用意
	reader = bufio.NewReader(read_file)

	// ファイルを書き込みモードでオープン(ファイルがなかったら作成する)
	write_file, _ := os.OpenFile(flag.Arg(1), os.O_WRONLY|os.O_CREATE, 0600)
	// Writerを書き込みモードでオープン
	writer = bufio.NewWriter(write_file)

	for {
		// EOFなら終了
		if err == io.EOF {
			return
		}
		// 1行読み出す
		line, err = reader.ReadBytes('\n')

		// ファイルに書き出す
		writer.Write(line)
		writer.Flush()
	}
}

間違った書き方してコンパイルが通らない、という状況が何度もあった。そのうち慣れるかなぁ。
実際にはbuilidする前にflymakeでエラーがわかるので、それほどストレスではない。