Comparación de Maps
Parte de la sección Lógica y Flujo del Journey de GO de Coddy — lección 29 de 68.
A diferencia de muchos otros tipos de datos en Go, los maps tienen una limitación única: no se pueden comparar directamente usando el operador ==. La única excepción a esta regla es cuando se compara un map con nil.
Esto significa que un código como este no compilará:
map1 := map[string]int{"a": 1, "b": 2}
map2 := map[string]int{"a": 1, "b": 2}
// ¡Esto causará un error de compilación!
if map1 == map2 {
fmt.Println("Maps are equal")
}Sin embargo, puedes comparar de forma segura un mapa con nil:
var myMap map[string]int
if myMap == nil {
fmt.Println("Map is nil")
}Cuando necesites comprobar si dos mapas contienen los mismos pares clave-valor, debes escribir una función personalizada que itere a través de ambos mapas y compare cada elemento individualmente. Este enfoque te otorga un control total sobre la lógica de comparación, permitiéndote definir exactamente qué significa "igual" para tu caso de uso específico.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Hoja de referencia
Los mapas no se pueden comparar directamente usando el operador ==, excepto cuando se comparan con nil:
// Esto NO compilará
map1 := map[string]int{"a": 1, "b": 2}
map2 := map[string]int{"a": 1, "b": 2}
if map1 == map2 { // ¡Error de compilación!
fmt.Println("Maps are equal")
}Puedes comparar un mapa con nil:
var myMap map[string]int
if myMap == nil {
fmt.Println("Map is nil")
}Para comprobar si dos mapas son iguales, debes escribir una función personalizada que itere a través de ambos mapas y compare cada elemento individualmente.
Pruébalo tú mismo
Esta lección no incluye un desafío de código.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Flujo de control avanzado
Switch con `fallthrough`Salir de bucles anidadosContinuar un bucle específicoLa sentencia `goto`Repaso: Control de bucles avanzado4Proyecto: Lista de tareas sencilla
Configuración del proyectoAñadir una tarea2Estructuras y Métodos
Definición de métodos en estructurasReceptores de valorReceptores de punteroElegir receptoresMétodos vs FuncionesResumen - Comportamiento de estructuras5Mapas en profundidad
Mapas de StructsPunteros como valores de MapVerificación de Maps NilComparación de MapsResumen - Contador de frecuencia de palabras3Interfaces (Conceptos básicos)
¿Qué es una interfaz?Definir una interfazImplementar una interfazUso de tipos de interfazInterfaz vacíaAserciones de tipoType SwitchResumen: Formas y comportamientos