僕は、javascript における IE 対応で辛い思い出が沢山あるのでカンマの位置には神経質なのですけども皆様は如何でしょうか?
まずは、go 言語のリテラルに関する仕様とレキサーの仕様を確認しておいて下さい。
カンマをつけるべきか、つけざるべきか#
で、仕様書には特にケツカンマについて特筆されていないのですよね。
普通の配列リテラルを宣言するとこうなります。
a := []int{1, 2, 3}
このコードはケツカンマありでも文法的に正しいので、以下のコードは正しい。
a := []int{1, 2, 3, }
で、これをgo fmt
するとケツカンマ無し状態になる。
所が、以下の様にリテラルを閉じる}
の位置を改行するとコンパイラはエラーを出す様になります。
a := []int{1, 2, 3}
// syntax error: need trailing comma before newline in composite literal
つまり、改行するならケツカンマは必須だと言う訳です。
正しいコードは以下の様になります。
a := []int{1, 2, 3,}
面白いのはコンパイルエラーになるケツカンマの無いコードをgo fmt
に食わせた時です。
missing ',' before newline in composite literal
分かってるならケツカンマ足して下さい。お願いします。