_
とは、宣言はするけれども後で使わない変数
というような理解でいいと思う。
- arrayの中身だけ表示したいがインデックスは表示しなくてもいい、みたいな場合を想定する。
numbers := []int{20, 30, 40}
for _, n := range numbers {
fmt.Println(n)
}
- このコードを実行すると
20, 30, 40
が得られる。 - このとき、インデックスは使わないから
_
を使う。 - では、このfor文から
_
を消して実行したらどうなるだろう?
numbers := []int{20, 30, 40}
for n := range numbers {
fmt.Println(n)
}
-
0 1 2
が出力される。 - nがインデックスになってしまった。
- じゃあ
_
をi
などの普通の変数に変えたらどうなるか?
numbers := []int{20, 30, 40}
for i, n := range numbers {
fmt.Println(n)
}
- おそらく使っているエディタのシンタックスチェックがエラーを吐く。
- 無理やり実行すると
i declared and not used
などのエラーがでる。