1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GoクイズAdvent Calendar 2020

Day 21

Go Quiz: 未使用変数

Last updated at Posted at 2020-12-20

以下のコードはコンパイル可能でしょうか?

package main

func main() {
    i := 0
    i++
}
  1. コンパイルできる
  2. コンパイルできない
回答と解説 正解は「1. コンパイルできる」です。普通未使用変数が存在するとコンパイルが出来ないのですが、 `++` 演算子が使われていると「使用された」と見なされるようです。ここらへんの挙動はスペックには明記されていません (見逃していたらごめんなさい)。余談ですが、変数名を `_` に置き換えたとして `_++` はコンパイルが通りません。他 `i += 1` も同様に `i` を使用したと見なされますが、 `_ += 1` はコンパイルが通りません。変数の使用判定は、おそらく `_` の使用可否と一緒なのではないかと思われます。

追記: 未使用変数の振る舞いについては仕様では定義されておらず、これは現コンパイラの実装を問う問題になってしまっています。そういう意味ではあまり良くない問題でした。失礼いたしました。 @DQNEO さんありがとうございます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?