Back to questions
Senior
4
Какие типы данных могут быть ключом map?
Companies where asked
Магнит Тех
Answer from AI
sobes.tech AI
В Go ключом для map могут быть только те типы, которые поддерживают операцию сравнения на равенство (== и !=). Это связано с тем, что map использует хеширование и сравнение ключей для поиска значений.
Подходящие типы ключей:
- Булевы значения (bool)
- Числа (int, float64, uint и т.д.)
- Строки (string)
- Указатели
- Каналы
- Интерфейсы, если динамический тип ключа поддерживает сравнение
- Структуры, все поля которых сравнимы
Нельзя использовать:
- Срезы (slice)
- Карты (map)
- Функции
Пример использования map с ключом типа struct:
package main
import "fmt"
type Point struct {
X, Y int
}
func main() {
m := make(map[Point]string)
m[Point{1, 2}] = "A"
fmt.Println(m[Point{1, 2}]) // Выведет "A"
}
Если попытаться использовать несравнимый тип в качестве ключа, компилятор выдаст ошибку.