Type assertion в Go проверяется в рантайме или при компиляции?

Проверка динамического значения при type assertion выполняется в runtime. Компилятор при этом проверяет допустимость самого выражения и используемых типов.

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

Что ответить на собеседовании

Проверка динамического значения при type assertion выполняется в runtime. Компилятор при этом проверяет допустимость самого выражения и используемых типов.

Подробный разбор

Ответ с пояснениями

Проверка динамического значения при type assertion выполняется в runtime. Компилятор при этом проверяет допустимость самого выражения и используемых типов.

В форме v, ok := x.(T) результат проверки доступен без panic. В форме v := x.(T) несовпадение вызывает panic. Это отличается от реализации интерфейса конкретным типом: соответствие набора методов может быть проверено компилятором при присваивании.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее