3.3Kпросмотров
13.8%от подписчиков
24 марта 2026 г.
Score: 3.7K
⭐️ Проверка интерфейсов на этапе компиляции В Go тип реализует интерфейс неявно, никаких implements не нужно. Это элегантно, но создаёт тихую ловушку: вы думаете, что тип реализует интерфейс, но из-за несовпадения сигнатуры метода — не реализует. Узнаёте об этом только в рантайме, когда присвоение падает. Лечится одной строкой, которая ничего не стоит в рантайме:
var _ io.Reader = (MyReader)(nil) Что здесь происходит Объявляется переменная типа io.Reader, ей присваивается nil-указатель на MyReader, результат выбрасывается. Если MyReader не реализует интерфейс, то компилятор отклонит код. Если реализует, то строка компилируется и не генерирует никакого кода. Такой же приём используется в стандартной библиотеке Go и в крупных open-source проектах. 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика #GoDeep