Выбор ответа Middle Дженерики обновлено
Интерфейс с набором типов как тип переменной
Вопрос
Что произойдёт с кодом type Number interface{ int | float64 }; var x Number?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Ошибка компиляции: такой интерфейс годится только как ограничение. Интерфейсы с объединениями типов (union) и тильдой не являются обычными типами и пригодны только в квадратных скобках как ограничения.
Варианты ответа
- x станет интерфейсом, в который можно положить int или float64
- x получит нулевое значение 0 типа int
- Скомпилируется, но упадёт при присваивании float64
- Ошибка компиляции: такой интерфейс годится только как ограничениеправильный ответ
Разбор
Интерфейсы с объединениями типов (union) и тильдой не являются обычными типами и пригодны только в квадратных скобках как ограничения. Обычный интерфейс с методами можно использовать и так, и так. Сумм-типов в Go нет, поэтому положить «int или float64» в одну переменную со статической проверкой нельзя.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.