Maison >développement back-end >Golang >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 ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-29 01:40:02809parcourir

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 souhaitez le 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 intégré.

Méthode 2 : copie manuelle des champs

Vous pouvez également 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 pourrait être utile si vous avez 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.

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!

Déclaration:
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