Sobes.tech
Senior

Cos'è una mappa in Go, come funziona internamente, cos'è una collisione e come si combatte?

sobes.tech AI

Risposta dell'AI

In Go, map è un tipo di dato incorporato per memorizzare coppie chiave-valore con accesso rapido. All’interno di map, viene implementato un meccanismo di tabella hash.

Struttura interna:

  • La chiave viene hashata in un valore intero.
  • L’hash determina l’indice del bucket in cui vengono memorizzate le coppie.
  • Ogni bucket contiene più coppie chiave-valore.

Collisione: situazione in cui chiavi diverse hanno lo stesso hash e finiscono nello stesso bucket. Per gestire questo, Go utilizza:

  • La memorizzazione di più coppie nello stesso bucket.
  • Quando ci sono molte collisioni, si effettua una ridistribuzione (rehash) aumentando il numero di bucket.

Questo permette di mantenere un accesso rapido agli elementi anche in presenza di collisioni.

Esempio di utilizzo di map:

m := make(map[string]int)
m["apple"] = 5
fmt.Println(m["apple"]) // 5

Pertanto, map in Go è una struttura efficiente per array associativi con ottimizzazione interna per minimizzare l’impatto delle collisioni.