Middle
Koje vrste podataka se mogu koristiti kao ključevi?
sobes.tech АИ
Одговор од АИ
U Go, ključevi u mapi mogu biti samo tipovi koji podržavaju operaciju poređenja (==). To je zato što je za pretraživanje ključa u hash tabeli potrebno poređenje ključeva na jednakost.
Tipovi koji se mogu koristiti kao ključevi:
- Primitivni tipovi:
int,float64,string,boolitd. - Pokazivači
- Strukture, ako su sva njihova polja porediva
- Nizovi, ako su elementi poredivi
Tipovi koji se ne mogu koristiti kao ključevi:
- Sečiva (
slice) - Mape (
map) - Funkcije
Ovo je povezano s tim da ovi tipovi ne podržavaju poređenje pomoću ==.
Primer:
m := make(map[string]int)
m["key"] = 42
// Struktura sa poredivim poljima
type Point struct {
X, Y int
}
m2 := make(map[Point]string)
m2[Point{1, 2}] = "Tačka"
Ako pokušate da koristite sečiv ili mapu kao ključ, kompajler će prikazati grešku.