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!