Sobes.tech
Junior — Middle

Ce tipuri de date pot acționa ca cheie într-un container map?

sobes.tech AI

Răspuns de la AI

În Go, cheia într-un map poate fi doar de tipuri de date comparabile (comparable). Asta înseamnă că operatorul == trebuie să fie definit pentru cheie.

Tipuri de chei potrivite:

  • Valori booleene (bool)
  • Numere (int, float64, uint8 etc.)
  • Șiruri (string)
  • Poinți
  • Canale
  • Interfețe, dacă tipul dinamic este comparabil
  • Structuri, dacă toate câmpurile sunt comparabile

Nu pot fi folosite ca cheie:

  • Slici (slice)
  • Mapuri (map)
  • Funcții

Exemplu:

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

// Structură cu câmpuri comparabile
type Point struct {
    X, Y int
}

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

Dacă încerci să folosești un tip necomparabil ca și cheie, compilatorul va da o eroare.