Book: The Complete Guide to Go Programming Also by me: Thinking in Go (2-book series) — Complete Guide to Go Programming + Hexagonal Architecture in Go My project: Hermes IDE | GitHub — an IDE for developers who ship with Claude Code and other AI coding tools Me: xgabriel.com | GitHub You open a PR review on a Go service. The diff adds three new methods on Counter . Two have value receivers, one has a pointer receiver. Three files later, Cache is the same way: most methods on the value, a few on the pointer, and the file compiles. Then a goroutine deadlocks in staging. Or a counter never increments. Or a benchmark on a 200-byte struct shows noticeably worse throughput than it had last week. The receiver style is the cause every time, and nobody flagged it in review. Three cases force the receiver type. Outside those three, it is style. Rule 1: Mutation needs a pointer A value receiver is a copy. The method runs against that copy, mutates it, and discards it when it returns. The original is untouched.…