👣

つぶやきGo言語【セミコロン】

2021/08/04に公開

Golangをある程度触ってきた人にはジョーシキ的な部分かと思いますが、初心者がそれなりにつまづいた箇所のメモ書きです。

「文(Statement)」とセミコロン

Goでは各々の「文」はセミコロンによって区切られます。ただGoでは言語仕様として、「すべてのセミコロンが省略可能」です。

この仕様が、たとえば配列の要素を複数行にわたって定義したときに悪さすることがあります。

strs := [5]string{
    "Tarako",
    "Sake",
    "Konbu",
    "Karubi",
    "Umebosi"  // この行でコンパイルエラーが発生
} 

Goのコンパイラは、行末が「{」や「,」で終わるような場合を除いて、単純に「文の終端」であると判断します。

(『スターティングGo言語』松尾愛賀/SHOEISHA)

上のコードの場合は、末尾の要素に明示的にカンマを置くことで、「行の継続」を示すことができます。

strs := [5]string{
    "Tarako",
    "Sake",
    "Konbu",
    "Karubi",
    "Umebosi",  // カンマを付けるとエラーが消える
} 

Discussion