Senior
Čo je to map v Go, ako je interné usporiadané, čo je kolízia a ako s ňou bojujú?
sobes.tech AI
Odpoveď od AI
V Go je map zabudovaný typ na ukladanie párov kľúč-hodnota s rýchlym prístupom. Vo vnútri map je implementovaný mechanizmus hashovacej tabuľky.
Vnútorná štruktúra:
- Kľúč je hashovaný na celé číslo.
- Hash určuje index koša (bucket), kde sú uložené páry.
- Každý kôš obsahuje niekoľko párov kľúč-hodnota.
Kolízia — situácia, keď rôzne kľúče majú rovnaký hash a spadajú do toho istého koša. Na zvládnutie tohto Go používa:
- Uloženie viacerých párov v jednom koši.
- Pri veľkom počte kolízií sa vykonáva preusporiadanie (rehash) s navýšením počtu košov.
Toto umožňuje zachovať rýchly prístup k prvkom aj pri kolíziách.
Príklad použitia mapy:
m := make(map[string]int)
m["apple"] = 5
fmt.Println(m["apple"]) // 5
Takže, map v Go je efektívna štruktúra pre asociatívne polia s vnútornou optimalizáciou na minimalizáciu vplyvu kolízií.