A value receiver is a method receiver passed as a value, so the method operates on a copy of the receiver rather than the original structure. section 5.6
Use value receivers selectively:
- Choose them mainly for structures that are small in memory, because each method call copies the receiver. section 5.6
- Keep a type's methods consistently pointer-based or value-based instead of mixing receiver kinds. section 5.6 section 5.1.2
- Prefer a pointer receiver when methods modify state, or when the structure contains pointer fields whose behavior requires care. section 5.1.2
The Game receiver
The terminal word game uses pointer receivers for Game because several methods modify game state and Game contains an output pointer field. This keeps its receiver declarations consistent and avoids the problems associated with value receivers and pointer fields. section 5.1.2


