以下のコードはコンパイル可能でしょうか?
package main
func main() {
i := 0
i++
}
- コンパイルできる
- コンパイルできない
回答と解説
正解は「1. コンパイルできる」です。普通未使用変数が存在するとコンパイルが出来ないのですが、 ++
演算子が使われていると「使用された」と見なされるようです。ここらへんの挙動はスペックには明記されていません (見逃していたらごめんなさい)。余談ですが、変数名を _
に置き換えたとして _++
はコンパイルが通りません。他 i += 1
も同様に i
を使用したと見なされますが、 _ += 1
はコンパイルが通りません。変数の使用判定は、おそらく _
の使用可否と一緒なのではないかと思われます。
追記: 未使用変数の振る舞いについては仕様では定義されておらず、これは現コンパイラの実装を問う問題になってしまっています。そういう意味ではあまり良くない問題でした。失礼いたしました。 @DQNEO さんありがとうございます。