Mesclando mapas em Golang
Combinar vários mapas em um único mapa mesclado em Golang é uma tarefa comum. Suponha que você tenha três mapas:
O objetivo é mesclar esses mapas com base na chave de identificação, resultando em:
Simples Mesclar
Para mesclar os mapas, você pode iterar sobre cada mapa de entrada e anexar os valores associados a cada chave a uma fatia no mapa de resultados.
func merge(ms ...map[string]string) map[string][]string {
res := map[string][]string{}
for _, m := range ms {
for k, v := range m {
res[k] = append(res[k], v)
}
}
return res
}
Evitando duplicações
Em alguns casos, você pode querer evitar valores duplicados no mapa mesclado. Para conseguir isso, verifique se há duplicatas antes de anexar.
func merge(ms ...map[string]string) map[string][]string {
res := map[string][]string{}
for _, m := range ms {
srcMap:
for k, v := range m {
// Check if (k,v) was added before:
for _, v2 := range res[k] {
if v == v2 {
continue srcMap
}
}
res[k] = append(res[k], v)
}
}
return res
}
Exemplo de uso
m1 := map[string]string{"id_1": "val_1"}
m2 := map[string]string{"id_2": "val_2", "id_1": "val_1"}
m3 := map[string]string{"id_1": "val_3"}
res := merge(m1, m2, m3)
fmt.Println(res)
Saída:
map[id_1:[val_1 val_3] id_2:[val_2]]
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3