Maison >développement back-end >Golang >Comment récupérer efficacement les valeurs de cartes profondément imbriquées dans Go ?

Comment récupérer efficacement les valeurs de cartes profondément imbriquées dans Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-21 01:12:11669parcourir

How to Efficiently Retrieve Values from Deeply Nested Maps in Go?

Récupération de valeurs à partir de cartes imbriquées

Dans Go, naviguer et récupérer des valeurs à partir de cartes profondément imbriquées peut être un défi. Cette question montre comment accomplir efficacement cette tâche.

Question

Comment puis-je accéder et récupérer les valeurs d'une carte imbriquée avec une structure comme celle-ci :

m := map[string]interface{}{
    "date":       "created",
    "clientName": "data.user.name",
    "address": map[string]interface{}{
        "street": "x.address",
    },
    "other": map[string]interface{}{
        "google": map[string]interface{}{
            "value": map[string]interface{}{
                "x": "y.address",
            },
        },
    },
    "new_address": map[string]interface{}{
        "address": "z.address",
    },
}

Réponse

Pour récupérer les valeurs des cartes imbriquées, vous pouvez utiliser la technique de diffusion non-panique, qui implique les éléments suivants étapes :

for i := range m {
    nestedMap, ok := m[i].(map[string]interface{})
    if ok {
        // Do what you want
    }
}

Dans l'exemple fourni, le code parcourt les touches de niveau supérieur de la carte m. Pour chaque clé, il tente de convertir la valeur correspondante en map[string]interface{}, en vérifiant si l'assertion de type réussit à l'aide de l'indicateur booléen ok. Si l'assertion de type réussit, vous pouvez alors accéder et manipuler la carte imbriquée selon vos besoins.

Pour plus de détails sur les assertions de type dans Go, reportez-vous à la documentation officielle sur https://golang.org/ref/ spec#Type_assertions. Cette approche vous permet de naviguer et de récupérer les valeurs des cartes imbriquées de manière pratique et sans erreur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn