Golang でファイルに書き込んだ時の改行コードが CRLF ではなく LF になる件
ファイルに書き込む系の処理の話だが、Python で書いてきたコードたちは CRLF になってくれていた。しかし Golang だと LF になる模様。CRLF にする方法はないものかと調べた。
結論
Golang 的には LF のみ。
GitHub で議論されてる。
Issue での提案は「Windows なら \n
は CRLF にしろや」だけど、最終的な結論は We aren't going to do this, so closing. で「この件はやらないっす。ばいばい」
どうしても CRLF で出したいなら?
自力で \r\n
を Write するしかなさそう。
あるいは mattn さんの mattn/go-textwriter を使うとか。
余談
なぜ LF であるべき?
同じく mattn さんのコメント が勉強になる。
- Golang はクロスプラットフォームに強い
- 改行コードも LF に揃えた方が楽
- Win10 のメモ帳も LF に対応したし、もう LF の流れでしょ
という感じだろうか。本当に仰るとおりです。
そもそもなぜ私は CRLF を使っている?
以下の事情による。
- 昔からずっと使い続けてきた名残(かれこれ10年以上は Windows でテキスト書いてる)
- 基本的に Windows しか使ってない
- Gitconfig の autocrlf は true がデフォで運用している
- バッチファイルや秀丸エディタマクロなど、CRLF じゃないと動かないものに依存している(たぶん他にもある)