🔴 Сложный · 3 очк. Интерфейсы
Можно ли встроить интерфейс в структуру?
A Нет, ошибка компиляции
B Да, структура автоматически реализует интерфейс
C Да, но вызов методов вызовет panic, если не задать значение
D Только с generics
Объяснение вопроса

Да. Интерфейс можно встроить в структуру без имени поля. Тогда структура получает все методы интерфейса (продвижение) и формально реализует этот интерфейс. Но если встроенному полю не присвоить конкретную реализацию (оставить nil), вызов метода приведёт к panic (nil pointer). Паттерн используется для внедрения зависимостей и декорирования: в тестах подставляют заглушки, в продакшене - реальные реализации.

type Reader interface { Read([]byte) (int, error) }
type Logger struct { Reader }
// Logger реализует Reader, но если Logger.Reader == nil, вызов Read вызовет panic
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.