> Как называются ресиверы в Go и когда использовать ресивер по значению или по указателю (Go)
Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы
Компании: Лига Цифровой Экономики
Стек: Go
> Пример ответа
В Go ресиверы (получатели) методов делятся на два типа: ресивер по значению (value receiver) и ресивер по указателю (pointer receiver). Они определяются в объявлении метода перед именем функции.
Ресивер по значению (например, func (u User) Print()) создаёт копию структуры при вызове метода. Используйте его, когда:
- Метод не изменяет состояние структуры (только чтение).
- Структура небольшая (например, несколько полей), чтобы копирование было дешёвым.
- Вы хотите гарантировать, что оригинальные данные останутся неизменными.
Ресивер по указателю (например, func (u *User) Update()) передаёт указатель на структуру. Используйте его, когда:
- Метод должен изменять поля структуры (мутация).
- Структура большая (много полей или вложенных данных), чтобы избежать дорогого копирования.
- Вы работаете с типами, которые не могут быть скопированы (например,
sync.Mutex).
Общее правило: если сомневаетесь, используйте ресивер по указателю для последовательности и производительности, особенно в больших проектах. Однако для простых типов (как int, string) или методов-геттеров предпочтителен ресивер по значению.
> Похожие задачи по Go
Как называются типы объектов, которые при модификации возвращают копию, а не изменяют исходный объект
Для чего нужен select без default кейса в Go
Используете ли вы пакет sync.Pool для контроля памяти в Go
Используете ли вы воркерпул для ограничения количества горутин в Go
> Похожие задачи по backend
Как называются типы объектов, которые при модификации возвращают копию, а не изменяют исходный объект
Для чего нужен select без default кейса в Go
Используете ли вы пакет sync.Pool для контроля памяти в Go
Используете ли вы воркерпул для ограничения количества горутин в Go
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью