Senior
Šta je mapa u Go, kako je organizovana unutar, šta je kolizija i kako se sa njom bori?
sobes.tech АИ
Одговор од АИ
У Go, map је уграђени тип података за чување парова кључ-вредност са брзим приступом. Унутар map реализован је механизам хеш табеле.
Унутрашња структура:
- Кључ се хешује у целобројну вредност.
- Хеш одређује индекс коша (bucket), где се чувају парови.
- Сваке коš садржи неколико парова кључ-вредност.
Колизије — ситуација када различити кључеви имају исти хеш и падају у исти коš. Да би се са тиме борили, Go користи:
- чување више парова у једном коšу.
- када има много колизија, врши се преуређење (rehash) са повећањем броја коšева.
Ово омогућава брз приступ елементима чак и при колизијама.
Пример коришћења map:
m := make(map[string]int)
m["apple"] = 5
fmt.Println(m["apple"]) // 5
Стога, map у Go-у је ефикасна структура за асоцијативне низове са унутрашњом оптимизацијом за минимизирање утицаја колизија.