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

Сравнение интерфейсов с несравнимым типом

Вопрос

Что произойдёт при сравнении a == b, где var a, b any = []int{1}, []int{1}?

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

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

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

Коротко

Правильный ответ: panic: comparing uncomparable type []int. Интерфейсы сравнимы на этапе компиляции, поэтому код собирается.

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

  1. true: содержимое слайсов совпадает
  2. false, потому что это разные слайсы
  3. panic: comparing uncomparable type []intправильный ответ
  4. Ошибка компиляции: слайсы несравнимы

Разбор

Интерфейсы сравнимы на этапе компиляции, поэтому код собирается. Во время выполнения сравниваются динамические типы, и если они совпали и несравнимы (слайс, мапа, функция), рантайм паникует. Так же паникует использование такого интерфейса ключом мапы. Сравнить содержимое слайсов: slices.Equal.

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

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