Что произойдёт: type I interface { M() }; var _ I = (*S)(nil); что проверяет эта строка?

Middle
106 просмотров
AFK Offer AI

Compile-time проверка что *S реализует интерфейс I. Если *S не имеет метода M() — ошибка компиляции. Это паттерн interface compliance check. Переменная _ не используется, но компилятор проверяет присваиваемость. Часто в stdlib: var _ io.Reader = (*MyReader)(nil). Нулевой runtime cost — всё проверяется в compile time.

Следующий вопрос

Что такое outbox pattern в Go?