Verificação eficiente da existência de chaves em vários mapas
No Go, é comum trabalhar com mapas, que são estruturas de dados eficientes para recuperar chaves pares de valores. No entanto, o código fornecido pelo desenvolvedor demonstra a necessidade de verificar a existência de uma chave em dois mapas separados. A questão permanece se esse processo pode ser mais conciso.
Conforme explicado na resposta, o uso do formulário especial v, ok := m[k] em Go para verificar a existência da chave é limitado a atribuições de variável única . Portanto, combinar as duas verificações em uma condição if usando este formulário não é viável.
No entanto, existem abordagens alternativas para alcançar a funcionalidade desejada:
Atribuição de tupla:
Se o tipo de valor do mapa for um tipo de interface e você puder garantir que o valor nulo não seja usado, você pode realizar a atribuição de tupla usando dois índices expressões:
if v1, v2 := m1["aaa"], m2["aaa"]; v1 != nil && v2 != nil { // ... }
Função auxiliar:
Uma função auxiliar pode ser criada para realizar a verificação de existência de chave em ambos os mapas e retornar os resultados:
func idx(m1, m2 map[string]interface{}, k string) ( v1, v2 interface{}, ok1, ok2 bool) { v1, ok1 = m1[k] v2, ok2 = m2[k] return }
Esta função pode então ser usada da seguinte forma:
if v1, v2, ok1, ok2 := idx(m1, m2, "aaa"); ok1 && ok2 { // ... }
Essas abordagens permitem uma verificação concisa e eficiente da existência de uma chave em vários mapas dentro de uma única instrução condicional.
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