Sobes.tech
Middle

Quali tipi di dati possono essere usati come chiavi?

sobes.tech AI

Risposta dell'AI

In Go, le chiavi in una mappa possono essere solo di tipi che supportano l'operazione di confronto (==). Questo perché, per cercare una chiave in una tabella hash, è necessario confrontare le chiavi per uguaglianza.

Tipi che possono essere usati come chiavi:

  • Tipi primitivi: int, float64, string, bool, ecc.
  • Puntatori
  • Strutture, se tutti i loro campi sono confrontabili
  • Array, se gli elementi sono confrontabili

Tipi che non possono essere usati come chiavi:

  • Slice (slice)
  • Mappe (map)
  • Funzioni

Questo perché questi tipi non supportano il confronto con ==.

Esempio:

m := make(map[string]int)
m["key"] = 42

// Struttura con campi confrontabili
 type Point struct {
     X, Y int
 }

m2 := make(map[Point]string)
m2[Point{1, 2}] = "Un punto"

Se si tenta di usare uno slice o una mappa come chiave, il compilatore genererà un errore.