Проверка динамического значения при type assertion выполняется в runtime. Компилятор при этом проверяет допустимость самого выражения и используемых типов.
Type assertion в Go проверяется в рантайме или при компиляции?
Проверка динамического значения при type assertion выполняется в runtime. Компилятор при этом проверяет допустимость самого выражения и используемых типов.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Проверка динамического значения при type assertion выполняется в runtime. Компилятор при этом проверяет допустимость самого выражения и используемых типов.
В форме v, ok := x.(T) результат проверки доступен без panic. В форме v := x.(T) несовпадение вызывает panic. Это отличается от реализации интерфейса конкретным типом: соответствие набора методов может быть проверено компилятором при присваивании.