Выбор ответа Middle Дженерики обновлено

Интерфейс с набором типов как тип переменной

Вопрос

Что произойдёт с кодом type Number interface{ int | float64 }; var x Number?

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

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

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

Коротко

Правильный ответ: Ошибка компиляции: такой интерфейс годится только как ограничение. Интерфейсы с объединениями типов (union) и тильдой не являются обычными типами и пригодны только в квадратных скобках как ограничения.

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

  1. x станет интерфейсом, в который можно положить int или float64
  2. x получит нулевое значение 0 типа int
  3. Скомпилируется, но упадёт при присваивании float64
  4. Ошибка компиляции: такой интерфейс годится только как ограничениеправильный ответ

Разбор

Интерфейсы с объединениями типов (union) и тильдой не являются обычными типами и пригодны только в квадратных скобках как ограничения. Обычный интерфейс с методами можно использовать и так, и так. Сумм-типов в Go нет, поэтому положить «int или float64» в одну переменную со статической проверкой нельзя.

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

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