Sobes.tech
Junior — Middle

Quali tipi di dati possono fungere da chiave in un contenitore map?

sobes.tech AI

Risposta dell'AI

In Go, la chiave in una mappa può essere solo di tipi di dati confrontabili (comparable). Ciò significa che deve essere definito l'operatore == per la chiave.

Tipi di chiavi appropriati:

  • Valori booleani (bool)
  • Numeri (int, float64, uint8, ecc.)
  • Stringhe (string)
  • Puntatori
  • Canali
  • Interfacce, se il tipo dinamico è confrontabile
  • Strutture, se tutti i campi sono confrontabili

Non è possibile usare come chiave:

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

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 un tipo non confrontabile come chiave, il compilatore genererà un errore.