今回はgolangで「panic: assignment to entry in nil map」というエラーが出たときの原因と解決策について紹介していきます。
目次
golangで「panic: assignment to entry in nil map」というエラーが出た
golang開発を行っていると「panic: assignment to entry in nil map」というエラーメッセージが表示されることがあります。
mapを使っていてpanicになったことはわかるのですが、一体何が原因なのでしょうか。
「panic: assignment to entry in nil map」の原因
このエラーはnilのmapに新たに要素を追加しようとすると発生します。
func main() {
var a map[string]int
a["x"] = 1
fmt.Println(a)
}
このコードを実行すると以下のようなエラーが表示されます。
panic:"assignment to entry in nil map"
mapのaは宣言時に初期化を行っていないため、nilとなっています。
「panic: assignment to entry in nil map」の対処法
mapを使う際は初期化を行いましょう。
初期化の方法は色んなやり方があるのですが、make()を使ってメモリ上に確保しながら初期化するのが一般的のように思います。
func main() {
a := make(map[string]int)
a["x"] = 1
fmt.Println(a)
}
func main() {
var a map[string]int
a = map[string]int{}
a["x"] = 1
fmt.Println(a)
}
func main() {
a := map[string]int{}
a["x"] = 1
fmt.Println(a)
}
どの初期化方法でも実行結果は同じmap[x:1]となります。
mapを使用する際は必ず初期化することを念頭に行いコーディングを行いましょう。
golangをもっと詳しくなりたい方に
golang学習のために筆者が実際に受講したUdemy教材をまとめています。
【入門】golangの学習におすすめのUdemy教材5選
これから業務でgolangを使うことになった方、これからgolangを使ってキャリアを歩んでいきたいという方でどのように学習していこうか悩んでいる方もいるかと思います。 ...
golang学習のために筆者が実際に読んでおすすめしたい本をまとめています。
【入門】golangの学習におすすめの本/書籍7選
これから業務でgolangを使うことになった方、これからgolangを使ってキャリアを歩んでいきたいという方でどのように学習していこうか悩んでいる方もいるかと思います。 ...