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