Maison > développement back-end > Golang > Comment puis-je initialiser efficacement des structures imbriquées dans Go ?

Comment puis-je initialiser efficacement des structures imbriquées dans Go ?

DDD
Libérer: 2024-12-10 21:51:11
original
481 Les gens l'ont consulté

How Can I Efficiently Initialize Nested Structs in Go?

Initialisation de structures imbriquées dans Go : exploration de l'initialisation littérale

Lorsque vous traitez des structures de données complexes, l'initialisation de structures imbriquées à plusieurs niveaux peut devenir un défi en Aller. Cet article aborde un problème courant rencontré lors de la tentative d'initialisation de telles structures, proposant une solution en exploitant les types de structures nommés.

Le problème

Dans l'exemple fourni, une tentative est conçu pour initialiser une structure imbriquée avec des types internes anonymes à l'aide d'un littéral composite. Cependant, dans Go, cela n'est possible que si la définition de la structure est répétée pour chaque couche d'imbrication. Cela peut être gênant et répétitif.

La solution : utiliser des types de structure nommés

Pour simplifier le processus d'initialisation, nous pouvons introduire des types de structure nommés pour chaque niveau d'imbrication. Cela nous permet d'utiliser des littéraux composites pour initialiser ces types nommés, qui peuvent ensuite être utilisés pour construire la structure principale.

Exemple de code

Considérez le code mis à jour suivant :

type domain struct {
    id string
}

type user struct {
    name     string
    domain   domain
    password string
}

type password struct {
    user user
}

type identity struct {
    methods  []string
    password password
}

type auth struct {
    identity identity
}

type tokenRequest struct {
    auth auth
}

func main() {
    req := &tokenRequest{
        auth: auth{
            identity: identity{
                methods: []string{"password"},
                password: password{
                    user: user{
                        name: os.Username,
                        domain: domain{
                            id: "default",
                        },
                        password: os.Password,
                    },
                },
            },
        },
    }

    fmt.Printf("%+v\n", req)
}
Copier après la connexion

En définissant des types de structures nommées et en les initialisant à l'aide de littéraux composites, nous pouvons facilement construire des structures imbriquées complexes sans le besoin de définitions de structures intermédiaires.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal