Canonical guidance

Use when

Avoid

Preferred pattern

type Counter struct {
	n int
}

func (c *Counter) Inc() { c.n++ }

Anti-pattern

func (c Counter) Inc() { c.n++ }

Explanation: This anti-pattern is tempting when methods evolve one by one, but mixed receiver semantics create subtle copying and API-consistency issues.

Why

Sources