Ответ
В 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