"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment convertir une structure en Go : intégration, copie manuelle ou conversion explicite ?

Comment convertir une structure en Go : intégration, copie manuelle ou conversion explicite ?

Publié le 2024-11-09
Parcourir:541

How to Convert a Struct in Go: Embedding, Manual Copying, or Explicit Conversion?

Conversion de structure dans Go

Considérez les deux structures suivantes :

type A struct {
    a int
    b string
}

type B struct {
    A
    c string
}

Supposons que vous ayez une variable de type A et que vous souhaitiez la convertir en type B. Est-ce possible dans Go, ou devez-vous copier manuellement les champs ou créer une méthode de conversion explicite ?

Méthode 1 : affectation de structure intégrée

Comme vous l'avez mentionné dans votre question, l'intégration peut être utilisée à cette fin. En incorporant A dans B, vous pouvez convertir une variable de type A en type B simplement en l'attribuant au champ intégré. Par exemple :

func main() {
    structA := A{a: 42, b: "foo"}
    structB := B{A: structA} // Embed structA into structB
}

Cette approche crée une nouvelle instance de B qui contient les données de A dans son champ incorporé.

Méthode 2 : Copie manuelle des champs

Alternativement, vous pouvez copier manuellement les champs de A vers B comme suit :

func main() {
    structA := A{a: 42, b: "foo"}
    structB := B{
        A: structA, // Copy fields from structA
        c: "bar",
    }
}

Cette méthode consiste à créer une nouvelle instance de B et à attribuer manuellement les champs de A.

Méthode 3 : méthode de conversion explicite

Une autre option consiste à créer une méthode de conversion explicite qui convertit A en B. Cela peut être utile si vous disposez d'une logique de conversion complexe. Cependant, cette approche n'est pas nécessaire dans ce cas, car les méthodes ci-dessus constituent un moyen simple d'obtenir la conversion souhaitée.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3