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

Как определить, какое значение можно использовать в качестве ключа в структуре данных Map?

Компании, где спрашивали
Lamoda Tech

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

sobes.tech AI

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

Что можно использовать в качестве ключа:

  • Примитивные типы: строки, числа, булевы значения.
  • Указатели.
  • Структуры, если все их поля сравнимы.

Что нельзя использовать:

  • Срезы (slice), карты (map), функции, так как они не сравнимы.

Пример:

m := make(map[string]int) // строка — валидный ключ
m["key"] = 42

// Структура с сравнимыми полями
type Point struct {
    X, Y int
}
var points = make(map[Point]string)
points[Point{1, 2}] = "A"

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