MENU

golangで「invalid memory address or nil pointer dereference」というエラーが出たときの原因と対処法

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

今回はgolangで「runtime error: invalid memory address or nil pointer dereference」というエラーが出たときの原因と解決策について紹介していきます。

目次

golangで「invalid memory address or nil pointer dereference」というエラーが出た

golangで開発を行っていると「invalid memory address or nil pointer dereference」というエラーに遭遇します。

「invalid memory address or nil pointer dereference」はポインタ型変数を扱っているときに発生することが多いエラーです。

「invalid memory address or nil pointer dereference」の原因

このエラーが発生する原因はnilが入っているポインタ型変数を参照していることです。

例えば以下のコードではポインタ型変数を初期化して宣言しています。

func main() {
	var a *int
	fmt.Println(*a)
}

これに対しPrintln()でポインタaの値にアクセスしていますが、nilのため以下のエラーとなっています。

panic: runtime error: invalid memory address or nil pointer dereference

他にも以下のコードのようにポイントaの値に直接代入しようとしてもnillのためエラーとなります。

func main() {
	var a *int
	*a = 1
}

「invalid memory address or nil pointer dereference」の対処法

直接値の代入はできませんが、以下のように同じポインタ型の変数であればそのまま代入することができます。

func main() {
	var a *int
	b := 1
	a = &b
	fmt.Println(*a)
}

golangをもっと詳しくなりたい方に

golang学習のために筆者が実際に受講したUdemy教材をまとめています。

あわせて読みたい
【入門】golangの学習におすすめのUdemy教材5選 これから業務でgolangを使うことになった方、これからgolangを使ってキャリアを歩んでいきたいという方でどのように学習していこうか悩んでいる方もいるかと思います。 ...

golang学習のために筆者が実際に読んでおすすめしたい本をまとめています。

あわせて読みたい
【入門】golangの学習におすすめの本/書籍7選 これから業務でgolangを使うことになった方、これからgolangを使ってキャリアを歩んでいきたいという方でどのように学習していこうか悩んでいる方もいるかと思います。 ...
タメになったらシェアお願いします!
  • URLをコピーしました!
  • URLをコピーしました!
目次