Back to questions
Middle
210
Какие типы данных можно использовать в качестве ключей?
Answer from AI
sobes.tech AI
В Go ключами в map могут быть только те типы, которые поддерживают операцию сравнения (оператор ==). Это связано с тем, что для поиска ключа в хэш-таблице необходимо сравнивать ключи на равенство.
Типы, которые можно использовать в качестве ключей:
- Примитивные типы:
int,float64,string,boolи т.д. - Указатели
- Структуры, если все их поля сравнимы
- Массивы, если элементы сравнимы
Типы, которые нельзя использовать в качестве ключей:
- Срезы (
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"
Если попытаться использовать срез или map в качестве ключа, компилятор выдаст ошибку.