Copier des structures avec des membres identiques et des types de variantes
Dans Go, il n'est pas rare d'avoir des structures avec des membres identiques mais des types différents. Prenons l'exemple suivant :
type Common struct { Gender int From string To string } type Foo struct { Id string Name string Extra Common } type Bar struct { Id string Name string Extra Common }
Étant donné une instance de Foo et Bar, comment pouvons-nous transférer des données de l'un à l'autre ?
Solution : Conversion
Étant donné que les types sous-jacents de Foo et Bar sont identiques à l'exception des balises struct, Go propose une solution simple : la conversion. En convertissant la valeur Foo en type Bar, nous écrasons efficacement les données existantes dans Bar. Voici le code :
foo := Foo{Id: "123", Name: "Joe"} bar := Bar(foo)
Exemple
Testons la conversion dans un exemple de terrain de jeu : https://go.dev/play/p/1W3EXQVXVhS.
Limitations
Il convient de noter que la conversion ne fonctionne que lorsque les types sous-jacents sont les mêmes, à l'exception de struct balises. Si les types sous-jacents diffèrent considérablement, la création d'une fonction de copie dédiée serait nécessaire.
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!