Что такое reciever

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

Ответ

В Go, receiver — это параметр функции, который связывает её с определённым типом, превращая в метод. Указывается перед именем функции в объявлении.

type Circle struct {
    Radius float64
}

// Метод с receiver типа Circle
func (c Circle) Area() float64 {
    return 3.14 * c.Radius * c.Radius
}

Особенности:

  • Может быть как value receiver ((c Circle)), так и pointer receiver ((c *Circle))
  • Value receiver работает с копией, pointer receiver — с оригиналом
  • Имя receiver обычно короткое (1-2 буквы), согласованное с типом
  • Receiver определяет, какой тип получает метод

Pointer receiver используют когда нужно:

  • Изменять оригинальную структуру
  • Избежать копирования больших структур
  • Реализовывать интерфейсы, требующие pointer semantics