空白識別子とは何ですか?
空白識別子は、アンダースコア( _ )演算子です。
関数が返す値を無視したり、副作用のためにインポートしたりする時に使います。
なぜ必要なのか?
Golangコンパイラは、宣言されているが使用されていない変数に遭遇するたびに、エラーを投げます。
その時に空白の識別子を使うだけで、変数をまったく宣言しないことができるようになります。
空白識別子の用途
空白識別子は、どんな値も無視することができます。
この識別子の主な使用法としては、関数が返す値を無視したり、インポートの副作用を無視したりすることです。
関数の戻り値を無視する
空白識別子は、関数が返すいかなる値も無視します。
以下のコードは、空白識別子で関数の戻り値を無視する使い方を示しています。
package main
import (
"fmt"
)
func f() (int, int) {
return 100, 200
}
func main() {
i, _ := f() // 2つ目の戻り値を無視する
fmt.Println(i) // 100
}
importの副作用
Golangのパッケージは初期化のためだけにインポートされる場合があります。(パッケージをimportするけど、そのパッケージがコード上で使用されないということ)
空白の識別子を使うと、上記のことが可能になり、パッケージをインポートだけして使用しないということができます。
コンパイラーエラーを無視する
空白の識別子は、何らかの目的で変数を無視する場合に使用することができます。
多くの場合、コードのデバッグに役立ち、後で空白演算子を置き換えて変数を追加するという使い方ができます。
package main
import (
"fmt"
)
func test() int {
return 98
}
func main() {
r := test()
_ = r + 10 // いったん処理の結果を無視する
// あとで変数を追加できる
fmt.Println(r) // 98
}