Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Golang: pointer receiver, value receiver, method set, interface

Как повлияет тип получателя (по значению или по ссылке) на реализацию интерфейса двумя структурами?

Проверяет понимание, какие методы делает тип удовлетворяющим интерфейс.

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

Если метод с сигнатурой func (t T) M() объявлен для значения, то и T и *T реализуют интерфейс. Если func (t *T) M(), только *T реализует. Выбор влияет на возможность вызывать методы через значение или указатель при передаче в интерфейс.

Длинный ответ

Метод на значении:

  • func (v T) M() → T и *T реализуют интерфейс.

Метод на указателе:

  • func (v *T) M() → только *T реализует.

Пример:

type S struct{}
func (S) Foo() {}
func (*S) Bar() {}
var i1 interface{ Foo() } = S{}   // ок
var i2 interface{ Foo() } = &S{}  // ок
var i3 interface{ Bar() } = &S{}  // ок
// var i4 interface{ Bar() } = S{} // ошибка

Вывод

Решайте, нужны ли вам методы, мутирующие объект, чтобы определять receiver.

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Golang

    Golang

Ключевые слова

#pointer receiver

#value receiver

#method set

#interface

Подпишись на Golang Developer в телеграм

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.