Maison > développement back-end > Golang > Comment puis-je simplifier l'initialisation de structures imbriquées dans Go ?

Comment puis-je simplifier l'initialisation de structures imbriquées dans Go ?

Patricia Arquette
Libérer: 2024-12-11 00:32:11
original
309 Les gens l'ont consulté

How Can I Simplify Nested Struct Initialization in Go?

Initialisation littérale des structures imbriquées dans Go

Lors de la mise en œuvre de structures de données complexes dans Go, l'initialisation des structures imbriquées peut être un défi. Dans certains cas, il est souhaitable d'initialiser ces structures directement, sans définir explicitement chaque niveau imbriqué.

Énoncé du problème

Considérez la structure suivante :

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

Une tentative naïve d'initialisation de cette structure pourrait ressembler à ceci :

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

Solution : types de structure nommés

La clé pour simplifier cette initialisation est d'utiliser des types de structure nommés. Cela vous permet de définir la structure une fois et de l'utiliser à plusieurs endroits :

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

Avec les types de structure nommés, vous pouvez désormais initialiser directement la structure tokenRequest :

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

Cela fournit un méthode plus simple et concise pour initialiser des structures imbriquées dans Go.

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