Выбор ответа Junior Структуры, методы и интерфейсы обновлено

Приведение типа интерфейса без ok

Вопрос

Что произойдёт при n := v.(int), если в v any лежит строка?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: panic: interface conversion. Приведение в одноэлементной форме паникует при несовпадении типа.

Варианты ответа

  1. n получит 0, как при ok-форме
  2. panic: interface conversionправильный ответ
  3. Ошибка компиляции: any не int
  4. n получит длину строки

Разбор

Приведение в одноэлементной форме паникует при несовпадении типа. Форма с двумя значениями n, ok := v.(int) не паникует: ok == false, n == 0. Компилятор не может знать, что лежит в any. Никаких автоматических преобразований вроде длины строки нет.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.