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 } } } } }
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, }, }, }, }, }
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 }
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, }, }, }, }, }
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!