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) // ошибка компиляции
Это связано с тем, что ключи должны иметь определённое и стабильное поведение при сравнении для корректной работы хеш-таблицы.