Goのbufio.Scannerの落とし穴について。 概要 Goのbufio.Scannerはio.Readerを一行ずつ読み込んで行く時に非常に便利なライブラリなのだけど、タイトルの通り、入力データ(io.Reader)の1行の長さがScannerのバッファサイズを超えるとスキャンをやめてしまうという問題がある。バッファサイズはデフォルトでbufio.MaxScanTokenSize(65536)バイトとそれほど大きくないので、例えば大きめのCSVや各行にJSONが書かれているテキストファイルをScannerで処理するとこの問題に当たることがあるかもしれない。 以下は動作確認用コード。Go Playground上で実行してみたい方はこちらをどうぞ。 package main import ( "bufio" "fmt" "strings" ) func main() { // 2行目が6