Sobes.tech
Назад к вопросам
Junior — Middle
76

Какие виды данных могут выступать в роли ключа в контейнере map?

Компании, где спрашивали
Цифровая Эволюция

Ответ от нейросети

sobes.tech AI

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

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

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

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

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

Пример:

m := make(map[string]int)
m["key"] = 42

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

m2 := make(map[Point]string)
m2[Point{1,2}] = "A point"

Если попытаться использовать несравнимый тип в качестве ключа, компилятор выдаст ошибку.