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,boolstb. - 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.