Что произойдёт при неуспешном type assertion в Go в вариантах с `ok` и без `ok`?

Без ok неудачный type assertion вызывает panic. В форме value, ok := x.(T) возвращаются нулевое значение T и false, без panic.

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

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

Без ok неудачный type assertion вызывает panic. В форме value, ok := x.(T) возвращаются нулевое значение T и false, без panic.

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

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

Условие

Что произойдёт при неуспешном type assertion в Go в вариантах с ok и без ok?

Ответ

Без ok неудачный type assertion вызывает panic. В форме value, ok := x.(T) возвращаются нулевое значение T и false, без panic.

Проверяется динамический тип значения внутри интерфейса. Для интерфейсного T достаточно реализации его методов, для конкретного типа требуется соответствующий динамический тип. Nil-интерфейс также не проходит assertion. Используйте форму с ok там, где несовпадение является ожидаемым вариантом.

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

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

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

Подробнее