Наличие звёздочки * у ресивера в Go означает, что метод работает с указателем на экземпляр структуры, а не с его копией.
Последствия этого:
- Изменение состояния: Метод может изменять поля самого экземпляра структуры, а не только его копии.
- Производительность: Передача указателя обычно быстрее, чем копирование больших структур, особенно при вызове из цикла.
- Согласованность интерфейсов: При реализации интерфейса, если одним из методов требуется изменять состояние структуры (использует указатель-ресивер), то все методы, реализующие этот интерфейс, должны использовать указатель-ресивер для данного типа.
Пример: Изменение поля структуры с указателем-ресивером:
go
Пример без указателя-ресивера:
go