Интерфейсы Go: методы, type assertion и подмена зависимостей

Задачи Go на интерфейсы: pointer receiver, type assertion с ok, композицию и fake-зависимости.

Состав подборки: 4 задачи на код. Условия и формат проверки указаны на странице каждой задачи.

Разберите маленький пример

Если метод изменяет состояние счётчика через указатель, вызов должен работать с нужным экземпляром. Отдельно проверьте, реализует интерфейс значение T или указатель *T: наборы методов различаются. Успешная компиляция не доказывает правильность изменения состояния.

На что обратить внимание

  • Используйте форму assertion с ok, если дополнительный интерфейс необязателен.
  • Интерфейс выделяют по нужному поведению клиента, а не по всем методам реализации.
  • Fake в тесте должен позволять проверить вызовы и ошибки, а не просто всегда возвращать успех.

Порядок практики

  1. Go pointer receiver и встраивание struct: изменяемый счётчик — код.
  2. Go type assertion с ok: дополнительный интерфейс для объекта — код.
  3. Go: композиция интерфейсов ReaderNotifier и обработка ошибки — код.
  4. Go: подмена зависимостей интерфейсами и fake-уведомитель — код.

Куда двигаться дальше

База языка — бесплатный курс Go; архитектурное продолжение — платный курс микросервисов на Go.

Закрепите работу с коллекциями Go.