こんな感じの関数を書いたとします。
func hoge() (sub int) { for _,row := range rows { if r.MatchString(row[0]) { return // <- 本当は continue と書きたかった } // .... }
continue と書くべきところをなぜかうっかり return と書いてしまいました。
で、本来ならループ内の各要素を1つ飛ばす、という挙動にしたかったところが、関数ごと飛んでいたわけです。
名前付き返り値が宣言されているので
return sub
と同じことに
なり、Golangのお約束として初期化されたintは0なので、
return 0
ということになるわけですね。
https://play.golang.org/p/zBT_cS2DvF
もしこれが名前付き返り値でなければ、想定通りエラーになっていたはずです。
https://play.golang.org/p/6vUj8oCSJt