Какие типы данных можно использовать в качестве ключа для map? Можно ли использовать массив как ключ?

В Go ключом для map может быть любой тип, который поддерживает операцию сравнения == и !

Короткий ответ

Что ответить на собеседовании

В Go ключом для map может быть любой тип, который поддерживает операцию сравнения == и !=. Это значит, что ключами могут быть базовые типы (int, string, bool и т.д.), указатели, структуры, если все их поля сравнимы, а также интерфейсы, если динамический тип сравним.

Подробный разбор

Ответ с пояснениями

В Go ключом для map может быть любой тип, который поддерживает операцию сравнения == и !=. Это значит, что ключами могут быть базовые типы (int, string, bool и т.д.), указатели, структуры, если все их поля сравнимы, а также интерфейсы, если динамический тип сравним.

Массивы в Go сравнимы, если их элементы сравнимы, поэтому массивы можно использовать как ключи в map. Например:

m := make(map[[3]int]string)
m[[3]int{1, 2, 3}] = "value"

Однако срезы (slice) нельзя использовать как ключи, так как они не сравнимы (кроме сравнения с nil).

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку