Выбор ответа Junior Структуры, методы и интерфейсы обновлено
Приведение типа интерфейса без ok
Вопрос
Что произойдёт при n := v.(int), если в v any лежит строка?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: panic: interface conversion. Приведение в одноэлементной форме паникует при несовпадении типа.
Варианты ответа
nполучит 0, как при ok-форме- panic: interface conversionправильный ответ
- Ошибка компиляции: any не int
nполучит длину строки
Разбор
Приведение в одноэлементной форме паникует при несовпадении типа. Форма с двумя значениями n, ok := v.(int) не паникует: ok == false, n == 0. Компилятор не может знать, что лежит в any. Никаких автоматических преобразований вроде длины строки нет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Структуры, методы и интерфейсы»
- LRU-кеш на Go: map и двусвязный список
- Очередь с приоритетом через container/heap на Go
- Площади фигур через интерфейс Shape на Go
- Сортировка структур по нескольким ключам на Go
- Что выведет Go: встраивание и вызов метода
- Что выведет Go: интерфейс хранит копию значения
- Что выведет Go: method value и defer копируют ресивер
- Что выведет Go: nil-указатель в интерфейсе error