Comprobación eficiente de la existencia de claves en varios mapas
En Go, es común trabajar con mapas, que son estructuras de datos eficientes para recuperar claves. -pares de valores. Sin embargo, el código proporcionado por el desarrollador demuestra la necesidad de verificar la existencia de una clave en dos mapas separados. La pregunta sigue siendo si este proceso se puede hacer más conciso.
Como se explica en la respuesta, el uso de la forma especial v, ok := m[k] en Go para verificar la existencia de claves se limita a asignaciones de una sola variable. . Por lo tanto, combinar las dos comprobaciones en una si la condición mediante este formulario no es factible.
Sin embargo, existen enfoques alternativos para lograr la funcionalidad deseada:
Asignación de tuplas:
Si el tipo de valor del mapa es un tipo de interfaz y puede asegurarse de que no se utilice el valor nulo, puede realizar una asignación de tuplas utilizando dos índices. expresiones:
if v1, v2 := m1["aaa"], m2["aaa"]; v1 != nil && v2 != nil { // ... }
Función auxiliar:
Se puede crear una función auxiliar para realizar la verificación de existencia de claves en ambos mapas y devolver los 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 función se puede utilizar de la siguiente manera:
if v1, v2, ok1, ok2 := idx(m1, m2, "aaa"); ok1 && ok2 { // ... }
Estos enfoques permiten una verificación concisa y eficiente de la existencia de una clave en múltiples mapas dentro de una única declaración condicional.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3