Sobes.tech
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-у је ефикасна структура за асоцијативне низове са унутрашњом оптимизацијом за минимизирање утицаја колизија.