見出し画像

golangで「assignment to entry in nil map」というエラーが出たときの原因と対処法

今回は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をもっと詳しくなりたい方に

初めてのGo言語

Go言語の入門から応用まではこの一冊で網羅されています。説明も順序立てて説明されており完成度の高い参考書となっています。


詳解Go言語Webアプリケーション開発

こちらはGo言語の基礎知識を得たあとに読むことをすすめる本となっています。ハンズオン形式で手を動かしながら実装をしていくことができるため、実際の開発を意識しながらGo言語を学ぶことができます。

以下の記事では他にも筆者が実際に読んでおすすめしたい本をまとめています。


【Go入門】Golang基礎入門 + 各種ライブラリ + 簡単なTodoWebアプリケーション開発(Go言語)

まだGo言語の勉強を始めていない方、全くの初心者の方にはこちらのUdemy教材が最もおすすめです。

この教材ではgolangの基礎について網羅的に学ぶことができます。ただ見て学ぶだけでなく、講座の中でアプリ作成まで行うことで学んだことの理解をさらに深めることができます。


現役シリコンバレーエンジニアが教えるGo入門 + 応用でビットコインのシストレFintechアプリの開発

個人的に最も勉強になったのは「現役シリコンバレーエンジニアが教えるGo入門 + 応用でビットコインのシストレFintechアプリの開発」という教材です。
本格的なレクチャーに入る前に、なぜGoなのか、なぜFintechなのかについて説明されていることで、Goの概念や意味について大枠から理解することができます。

以下の記事では筆者が実際に受講したおすすめUdemy教材をまとめています。

※本ページではアフィリエイトリンク(PR)が含まれています


この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?