Golang で書き込むファイルの文字コードは LF 固定であるということ(CRLF はサポートしていない)

Python の時はちゃんと CRLF で書いてくれていたが、Golang だと LF 固定になる模様。Go 公式も「CRLF はサポートしない」と結論を出している。

試したコード

func list2file(filepath string, lines []string) {
    fp, err := os.Create(filepath)
    if err != nil {
        abort(err.Error())
    }
    defer fp.Close()

    writer := bufio.NewWriter(fp)
    for _, line := range lines {
        writer.WriteString(line + "\n")
    }
    writer.Flush()
}

CRLF をサポートしない、の根拠は?

Go の GitHub リポジトリ。

上記 Issue で色々議論されいるが、mattn さんの発言がわかりやすい。

  • issuecomment-439251733
    • クロスプラットフォームアプリつくってる時に CRLF のせいで苦労してる
    • Golang は移植性が強いのにもったいない
    • Win10 の notepad も LF 対応したよ
  • issuecomment-441442408

んで、一番最後らへんに

We aren't going to do this, so closing.

と結論が出されて close されてる。