Что означает `*Cache` в receiver метода и что произойдёт, если написать receiver без звёздочки?

В Go объект receiver с указателем (например, func (r ReceiverType) Method()) позволяет методу изменять состояние самого объекта, на который указывает receiver.

Короткий ответ

Что ответить на собеседовании

В Go объект receiver с указателем (например, func (r ReceiverType) Method()) позволяет методу изменять состояние самого объекта, на который указывает receiver. Использование указателя вместо значения дает следующие преимущества:

Подробный разбор

Ответ с пояснениями

В Go объект receiver с указателем (например, func (r *ReceiverType) Method()) позволяет методу изменять состояние самого объекта, на который указывает receiver. Использование указателя вместо значения дает следующие преимущества:

  • Позволяет изменять поля структуры внутри метода.
  • Избегает копирования больших структур при вызове метода, что повышает производительность.
  • Обеспечивает единообразие, если другие методы принимают указатель.

Пример:

type Counter struct {
    count int
}

func (c *Counter) Increment() {
    c.count++  // изменяем поле структуры через указатель
}

func main() {
    c := Counter{}
    c.Increment()
    fmt.Println(c.count)  // Выведет 1
}

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее