Sobes.tech
Back to questions
Middle+
5

Какие ключи могут быть у map в Go?

Companies where asked
WaterWal

Answer from AI

sobes.tech AI

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

Подходящие типы ключей:

  • Базовые типы: bool, int, float, string и т.д.
  • Указатели
  • Структуры, если все их поля сравнимы
  • Интерфейсы, если конкретные значения внутри сравнимы

Нельзя использовать в качестве ключей:

  • Срезы (slice)
  • Карты (map)
  • Функции

Пример:

m := make(map[string]int) // string — валидный ключ

// Структура с сравнимыми полями
 type Point struct {
     X, Y int
 }

m2 := make(map[Point]string)

// Нельзя использовать срез
// m3 := make(map[[]int]string) // ошибка компиляции

Это связано с тем, что ключи должны иметь определённое и стабильное поведение при сравнении для корректной работы хеш-таблицы.