Sobes.tech
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, bool itd.
  • 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.