Skill

go-nil-pointer

Pointer receiver nil safety - methods can be called on nil

From golang-workflow
Install
1
Run in your terminal
$
npx claudepluginhub jamesprial/prial-plugins --plugin golang-workflow
Tool Access

This skill uses the workspace's default tool permissions.

Skill Content

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()  // PANIC if t or t.Left is nil
}

CORRECT - Handle nil receiver

type Tree struct {
    Value int
    Left  *Tree
    Right *Tree
}

func (t *Tree) Sum() int {
    if t == nil {
        return 0  // Nil tree has sum of 0
    }
    return t.Value + t.Left.Sum() + t.Right.Sum()
}

// Now safe to call
var tree *Tree  // nil
sum := tree.Sum()  // Returns 0, no panic

Use Cases

Nil receiver pattern enables elegant recursive algorithms and optional behavior.

Quick Fix

  • Check if receiver is nil at method start
  • Define sensible zero behavior for nil receiver
  • Document whether methods are nil-safe

When NOT to Use

If nil receiver doesn't make semantic sense, panic early with clear message.

Stats
Stars1
Forks0
Last CommitJan 19, 2026