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

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

Mary-Kate Olsen
Libérer: 2024-12-24 12:50:15
original
369 Les gens l'ont consulté

How Can I Efficiently Initialize Multi-Level Nested Structs in Go?

Initialisation littérale de structures imbriquées à plusieurs niveaux dans Go

Les structures imbriquées fournissent un mécanisme puissant pour organiser et regrouper les données dans Go. Cependant, initialiser de telles structures avec des valeurs littérales peut être assez fastidieuse, en particulier lorsqu'il s'agit de plusieurs niveaux d'imbrication.

Considérez l'exemple suivant :

type tokenRequest struct {
    auth struct {
        identity struct {
            methods  []string
            password struct {
                user struct {
                    name   string
                    domain struct {
                        id string
                    }
                    password string
                }
            }
        }
    }
}
Copier après la connexion

Traditionnellement, l'initialisation de cette structure implique de définir chaque structure imbriquée séparément :

req := &tokenRequest{
    auth: struct {
        identity: struct {
            methods: []string{"password"},
            password: {
                user: {
                    name: os.Username,
                    domain: {
                        id: "default",
                    },
                    password: os.Password,
                },
            },
        },
    },
}
Copier après la connexion

Cependant, il existe un moyen plus pratique d'initialiser les structures imbriquées sans le besoin de définitions de structure distinctes.

Présentation des types de structure nommés

En définissant des types de structure nommés, nous pouvons utiliser des littéraux composites pour les initialiser directement dans la structure tokenRequest :

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
}
Copier après la connexion

Maintenant, nous pouvons initialiser la structure tokenRequest comme suit :

req := &tokenRequest{
    auth: auth{
        identity: identity{
            methods: []string{"password"},
            password: password{
                user: user{
                    name: os.Username,
                    domain: domain{
                        id: "default",
                    },
                    password: os.Password,
                },
            },
        },
    },
}
Copier après la connexion

Cette approche simplifie le processus d'initialisation en éliminant le besoin de définir des structures imbriquées séparément. Il améliore également la lisibilité et la maintenabilité en représentant clairement la structure et la hiérarchie des données.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal