Метод с value receiver func (s MyStruct) Method() получает копию структуры - любые изменения полей внутри метода не сохраняются в оригинале. Метод с pointer receiver func (s *MyStruct) Method() получает указатель и может менять поля оригинала. Для больших структур pointer receiver эффективнее (не копируется вся структура). Go автоматически подставляет &s при вызове метода по указателю, так что вызывать можно одинаково: s.Method().
func (p *Point) Move(dx, dy int) {
p.X += dx
p.Y += dy
}