Sobes.tech
Middle

¿Qué tipos de datos se pueden usar como claves?

sobes.tech AI

Respuesta de la IA

En Go, las claves en un mapa solo pueden ser de tipos que soporten la operación de comparación (el operador ==). Esto se debe a que, para buscar una clave en una tabla hash, es necesario comparar las claves por igualdad.

Tipos que se pueden usar como claves:

  • Tipos primitivos: int, float64, string, bool, etc.
  • Punteros
  • Estructuras, si todos sus campos son comparables
  • Arreglos, si los elementos son comparables

Tipos que no se pueden usar como claves:

  • Slices (slice)
  • Mapas (map)
  • Funciones

Esto se debe a que estos tipos no soportan comparación mediante ==.

Ejemplo:

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

// Estructura con campos comparables
 type Point struct {
     X, Y int
 }

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

Si intentas usar un slice o un mapa como clave, el compilador dará un error.