Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Golang: interface, compile-time assertion, unnamed variable

Как сообщить компилятору, что тип реализует интерфейс?

Проверяет знание идиомы явной проверки соответствия типа интерфейсу на этапе компиляции.

Короткий ответ

В Go соответствие интерфейсу осуществляется неявно, но для статической проверки используют переменную без имени, например:

var _ io.Reader = (*MyType)(nil)

Это заставит компилятор выдать ошибку, если MyType не реализует io.Reader.

Длинный ответ

Неявная реализация:

  • Любой тип, имеющий методы интерфейса, удовлетворяет ему без implements.

Явная проверка:

var _ SomeInterface = (*MyStruct)(nil)

Здесь компилятор проверяет, что *MyStruct имеет все методы SomeInterface.

Для значимых получателей:

var _ SomeInterface = MyStruct{}

Зачем:

  • Гарантировать на этапе сборки, что тип действительно реализует интерфейс, не дожидаясь runtime.

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    3

  • Сложность:

    5

Навыки

  • Golang

    Golang

Ключевые слова

#interface

#compile-time assertion

#unnamed variable

Подпишись на Golang Developer в телеграм

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.