Ответ
Ресивер со звёздочкой (*T) в Go позволяет работать с исходным экземпляром структуры, а не с его копией. Это полезно для модификации полей структуры или когда структура большая и копирование неэффективно.
Пример:
type User struct {
Name string
}
func (u *User) UpdateName(name string) {
u.Name = name // изменяет оригинальный User
}
func main() {
user := User{Name: "Alice"}
user.UpdateName("Bob")
fmt.Println(user.Name) // "Bob"
}
Без звёздочки метод работал бы с копией, и изменения не сохранились бы. Также указатели обязательны, если структура содержит мьютексы или другие поля, которые нельзя копировать.