Sobes.tech
Middle

Ce tipuri de date pot fi utilizate ca chei?

sobes.tech AI

Răspuns de la AI

În Go, cheile dintr-un map pot fi doar de tipuri care suportă operația de comparație (==). Acest lucru se datorează faptului că, pentru a căuta o cheie într-un tabel hash, este necesar să compari cheile pentru egalitate.

Tipuri care pot fi folosite ca chei:

  • Tipuri primitive: int, float64, string, bool etc.
  • Poinți
  • Structuri, dacă toate câmpurile lor sunt comparabile
  • Array-uri, dacă elementele sunt comparabile

Tipuri care nu pot fi folosite ca chei:

  • Slicing (slice)
  • Map-uri (map)
  • Funcții

Acest lucru se datorează faptului că aceste tipuri nu suportă comparația cu ==.

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 slice sau un map ca și cheie, compilatorul va genera o eroare.