Звёздочка у ресивера?

Junior
1.3k просмотров
AFK Offer AI

Звёздочка * означает 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 безопаснее для конкурентного доступа, так как каждая горутина работает со своей копией.

Следующий вопрос

Как правильно закрыть канал?