MeWrite Docs

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

Goのnilポインタ参照エラーの解決方法

概要

nilポインタを参照しようとした際に発生するランタイムパニックです。

エラーメッセージ

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x...]

原因

  1. 初期化されていないポインタ: 変数がnilのまま使用
  2. マップの未初期化: makeなしでマップにアクセス
  3. インターフェースのnil: nilインターフェースのメソッド呼び出し

解決策

1. nilチェック

1
2
3
4
5
6
func process(p *Person) {
    if p == nil {
        return
    }
    fmt.Println(p.Name)
}

2. マップの初期化

1
2
3
4
5
6
7
// 悪い例
var m map[string]int
m["key"] = 1 // panic!

// 良い例
m := make(map[string]int)
m["key"] = 1

3. ポインタの初期化

1
2
3
4
5
6
7
// 悪い例
var p *Person
p.Name = "John" // panic!

// 良い例
p := &Person{}
p.Name = "John"

よくある間違い

  • 関数がnilを返す可能性を考慮しない
  • JSONデコード後のnilチェック忘れ

Go の他のエラー

最終更新: 2025-12-09