Comparando Mapas
Parte da seção Lógica & Fluxo do Journey de GO da Coddy — lição 29 de 68.
Ao contrário de muitos outros tipos de dados em Go, os maps têm uma limitação única: eles não podem ser comparados diretamente usando o operador ==. A única exceção a essa regra é ao comparar um map com nil.
Isso significa que um código como este não compilará:
map1 := map[string]int{"a": 1, "b": 2}
map2 := map[string]int{"a": 1, "b": 2}
// Isso causará um erro de compilação!
if map1 == map2 {
fmt.Println("Maps are equal")
}No entanto, você pode comparar com segurança um mapa com nil:
var myMap map[string]int
if myMap == nil {
fmt.Println("Map is nil")
}Quando você precisa verificar se dois mapas contêm os mesmos pares chave-valor, você deve escrever uma função personalizada que itera por ambos os mapas e compara cada elemento individualmente. Essa abordagem oferece controle total sobre a lógica de comparação, permitindo que você defina exatamente o que "igual" significa para o seu caso de uso específico.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Folha de consulta
Mapas não podem ser comparados diretamente usando o operador ==, exceto ao comparar com nil:
// Isso NÃO irá compilar
map1 := map[string]int{"a": 1, "b": 2}
map2 := map[string]int{"a": 1, "b": 2}
if map1 == map2 { // Erro de compilação!
fmt.Println("Maps are equal")
}Você pode comparar um mapa com nil:
var myMap map[string]int
if myMap == nil {
fmt.Println("Map is nil")
}Para verificar se dois mapas são iguais, você deve escrever uma função personalizada que itera por ambos os mapas e compara cada elemento individualmente.
Experimente você mesmo
Esta lição não inclui um desafio de código.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica & Fluxo
1Fluxo de Controle Avançado
Switch com `fallthrough`Interrompendo Loops AninhadosContinuando um Loop EspecíficoA Instrução `goto`Recapitulação - Controle de Loop Avançado4Projeto: Lista de Tarefas Simples
Configuração do ProjetoAdicionando uma Tarefa2Structs e Métodos
Definindo Métodos em StructsRecebedores de ValorRecebedores de PonteiroEscolhendo RecebedoresMétodos vs FunçõesRecapitulação - Comportamento de Structs5Mapas em Profundidade
Mapas de StructsPonteiros como Valores de MapVerificando Mapas NilComparando MapasRecapitulação - Contador de Frequência de Palavras3Interfaces (O Básico)
O que é uma Interface?Definindo uma InterfaceImplementando uma InterfaceUsando Tipos de InterfaceInterface VaziaAsserções de TipoType SwitchRecapitulação - Formas e Comportamentos