Как работает method receiver — pointer vs value?

Middle
1.1k просмотров
AFK Offer AI

В Go метод можно определить с value receiver (func (s Server) Start()) или pointer receiver (func (s *Server) Start()). Value receiver получает копию структуры — изменения внутри метода не затронут оригинал. Pointer receiver работает с оригиналом и может его менять. Ещё важная разница: pointer receiver не копирует всю структуру, что экономит память для больших типов. Обычно на практике используют pointer receiver для всех методов типа, чтобы не путаться.

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

ООП в Go?