Middle
Какви типове данни могат да се използват като ключове?
sobes.tech AI
Отговор от 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}] = "Точка"
Ако се опитате да използвате срез или карта като ключ, компилаторът ще даде грешка.