Интерфейсы Go: методы, type assertion и подмена зависимостей
Задачи Go на интерфейсы: pointer receiver, type assertion с ok, композицию и fake-зависимости.
Состав подборки: 4 задачи на код. Условия и формат проверки указаны на странице каждой задачи.
Разберите маленький пример
Если метод изменяет состояние счётчика через указатель, вызов должен работать с нужным экземпляром. Отдельно проверьте, реализует интерфейс значение T или указатель *T: наборы методов различаются. Успешная компиляция не доказывает правильность изменения состояния.
На что обратить внимание
- Используйте форму assertion с ok, если дополнительный интерфейс необязателен.
- Интерфейс выделяют по нужному поведению клиента, а не по всем методам реализации.
- Fake в тесте должен позволять проверить вызовы и ошибки, а не просто всегда возвращать успех.
Порядок практики
- Go pointer receiver и встраивание struct: изменяемый счётчик — код.
- Go type assertion с ok: дополнительный интерфейс для объекта — код.
- Go: композиция интерфейсов ReaderNotifier и обработка ошибки — код.
- Go: подмена зависимостей интерфейсами и fake-уведомитель — код.
Куда двигаться дальше
База языка — бесплатный курс Go; архитектурное продолжение — платный курс микросервисов на Go.
- Go pointer receiver и встраивание struct: изменяемый счётчик
Допишите методы счётчика с pointer receiver, встроите его в Round и проверьте вызов методов через внешний тип.
Golang с нуля - Go type assertion с ok: дополнительный интерфейс для объекта
Обработайте объекты через общий интерфейс и безопасно проверьте дополнительный метод через type assertion с ok.
Golang с нуля - Go: композиция интерфейсов ReaderNotifier и обработка ошибки
Объедините чтение показаний и отправку предупреждений в составном интерфейсе; остановитесь на первой ошибке.
Golang с нуля - Go: подмена зависимостей интерфейсами и fake-уведомитель
Передайте SMS и push через узкие интерфейсы, запишите вызовы в fake-реализации и верните первую ошибку.
Golang с нуля
