Звёздочка * означает pointer receiver — метод получает указатель на значение, а не копию:
type User struct{ Name string }
// value receiver — работает с копией
func (u User) GetName() string { return u.Name }
// pointer receiver — может изменить оригинал
func (u *User) SetName(name string) { u.Name = name }
Используй pointer receiver когда: метод модифицирует поля, структура большая (избегаем копирования), или нужна консистентность (если хотя бы один метод с *, делай все с *). Value receiver безопаснее для конкурентного доступа, так как каждая горутина работает со своей копией.