Ты заметил, что название структуры реализации совпадает с именем интерфейса — компилятору это не понравится, как это исправить?

В одном пакете Go нельзя объявить интерфейс и структуру с одинаковым именем. Дайте реализации другое имя, отражающее её назначение.

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

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

В одном пакете Go нельзя объявить интерфейс и структуру с одинаковым именем. Дайте реализации другое имя, отражающее её назначение.

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

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

В одном пакете Go нельзя объявить интерфейс и структуру с одинаковым именем. Дайте реализации другое имя, отражающее её назначение.

Например, интерфейс Repository и структура PostgresRepository могут существовать в одном пакете, а два типа Repository — нет. Реализацию можно сделать неэкспортируемой и возвращать её через конструктор с интерфейсным типом. В разных пакетах одинаковые имена допустимы благодаря квалификатору пакета; переименование не должно менять публичный контракт без необходимости.

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

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

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

Подробнее