Как работает 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 build?