Без 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.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Что произойдёт при неуспешном type assertion в Go в вариантах с ok и без ok?
Ответ
Без ok неудачный type assertion вызывает panic. В форме value, ok := x.(T) возвращаются нулевое значение T и false, без panic.
Проверяется динамический тип значения внутри интерфейса. Для интерфейсного T достаточно реализации его методов, для конкретного типа требуется соответствующий динамический тип. Nil-интерфейс также не проходит assertion. Используйте форму с ok там, где несовпадение является ожидаемым вариантом.