Sobes.tech
Middle

Milyen adattípusokat lehet kulcsként használni?

sobes.tech MI

Válasz az MI-től

Go-ban a térképen lévő kulcsok csak olyan típusok lehetnek, amelyek támogatják az összehasonlítást (== operátor). Ez azért van, mert a hash-táblában való kereséshez szükséges a kulcsok egyenlőség szerinti összehasonlítása.

A kulcsként használható típusok:

  • Alapvető típusok: int, float64, string, bool stb.
  • Mutatók
  • Struktúrák, ha minden mezőjük összehasonlítható
  • Tömbök, ha az elemek összehasonlíthatók

A kulcsként nem használható típusok:

  • Szeletek (slice)
  • Térképek (map)
  • Függvények

Ez azért van, mert ezek a típusok nem támogatják az == szerinti összehasonlítást.

Példa:

m := make(map[string]int)
m["key"] = 42

// Összehasonlítható mezőkkel rendelkező struktúra
 type Point struct {
     X, Y int
 }

m2 := make(map[Point]string)
m2[Point{1, 2}] = "Egy pont"

Ha szeletet vagy térképet próbálsz kulcsként használni, a fordító hibát fog jelezni.