Что делает reciever со звёздочкой

«Что делает reciever со звёздочкой» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Ресивер со звёздочкой (*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"
}

Без звёздочки метод работал бы с копией, и изменения не сохранились бы. Также указатели обязательны, если структура содержит мьютексы или другие поля, которые нельзя копировать.