Not knowing which type of receiver to use
In Go, you can have either a pointer or a value receiver.
Mistake
This will not mutate the customer balance.
func (c customer) add(v float64) {
c.balance += v
}
Fix
func (c *customer) add(v float64) {
c.balance += v
}
Use pointer receivers for mutating an object. Use value receivers to keep an object immutable.