| name | go-nil-pointer |
| description | Pointer receiver nil safety - methods can be called on nil |
Pointer Receiver Nil
Problem
Methods with pointer receivers can be called on nil. Must handle nil receiver.
Pattern
WRONG - Assume receiver is non-nil
type Tree struct {
Value int
Left *Tree
}
func (t *Tree) Sum() int {
return t.Value + t.Left.Sum()
}
CORRECT - Handle nil receiver
type Tree struct {
Value int
Left *Tree
Right *Tree
}
func (t *Tree) Sum() int {
if t == nil {
return 0
}
return t.Value + t.Left.Sum() + t.Right.Sum()
}
var tree *Tree
sum := tree.Sum()
Use Cases
Nil receiver pattern enables elegant recursive algorithms and optional behavior.
Quick Fix
When NOT to Use
If nil receiver doesn't make semantic sense, panic early with clear message.