Wat is een map in Go? Hoe werkt het onder de motorkap? Wat gebeurt er bij een botsing?
sobes.tech AI
Antwoord van AI
In Go is een map een ingebouwd gegevenstype voor het opslaan van key-value paren met snelle toegang via de sleutel.
Onder de motorkap wordt de map geïmplementeerd als een hash-tabel met open adressering en gebruik van buckets. Elke bucket bevat meerdere elementen, wat helpt om collisions te verminderen.
Bij het toevoegen van een element wordt de sleutel gehasht, en de hash bepaalt de bucket. Als er al elementen met een andere sleutel in de bucket zijn, ontstaat er een collision. In dat geval worden de nieuwe elementen aan de bucket toegevoegd, en tijdens het zoeken worden de elementen binnen de bucket doorlopen om de sleutels te vergelijken.
Als het aantal elementen in een bucket te groot wordt, wordt een herverdeling (rehash) uitgevoerd met een toename van het aantal buckets om de prestaties te behouden.
Voorbeeld van het gebruik van map in Go:
m := make(map[string]int)
m["apple"] = 5
fmt.Println(m["apple"]) // 5
Op deze manier biedt de map efficiënte toegang en opslag van gegevens door middel van hashing en collision management binnen de buckets.