Golangでmapの中が空かどうかを確かめる方法
Golangにおいてmap(連想配列)の中身が存在するかどうかを確かめるには、以下の2通りの方法があります。
- nilチェックする
- len()関数で要素数が0かどうかを確かめる
それぞれ順に解説します。
nilチェックしてmapが空であることを確かめる
package main
import "fmt"
func main() {
var map1 map[int]int
fmt.Println(map1 == nil)
}
// 出力結果
// true
しかし、このやり方は、mapの宣言だけを行って値を代入していない場合に限ります。
そのため、以下のようにmapの変数宣言だけでなくゼロ値を代入した場合、nilチェックはfalseになります。
package main
import "fmt"
func main() {
map2 := map[int]int{}
fmt.Println(map2 == nil)
}
// 出力結果
// false
len()関数を使ってmapの要素数が0であることを確かめる
単にmap(連想配列)の要素が存在しないことを確認すれば良いのなら、Golangのlen()関数を使用して要素数をチェックし、それが0であるかを確かめれば大丈夫です。
package main
import "fmt"
func main() {
var map1 map[int]int
map2 := map[int]int{}
fmt.Println(len(map2))
fmt.Println(len(map1))
}
// 出力結果
// 0
// 0
上記のやり方であれば、mapを宣言しただけの場合でも要素数が0であることを確認できます。
なお、len()関数を使い方については、以下のの記事でより詳しく解説しています。