(понятное дело из-за GC)? Если нужно передать объект именно по ссылке, то используем именно ссылку или вообще все это дело делаем неявно и оставляем на волю компилятора как в других языках. А указатели без арифметики не имеют смысла имхо.
Только потому что так верно:
func (self *Foo) Set(x int) { self.val = x }
А так компилятор не позволяет - не довод:
func (self &Foo) Set(x int) { self.val = x }
Скорее всего это тоже вопрос к авторам компилятора
& это получение указателя. А * это тип.
В моём понимании, основная цель наличия указателей - передавать объекты внутрь функций с возможностью их менять и без необходимости копировать. Не совсем понятно к чему второй пример с (self &Foo). *Foo это тип - указатель на Foo. &Foo просто неправильно, т.к. нельзя взять адрес у типа, а не объекта этого типа.
Обсуждают сегодня