Maison >développement back-end >Golang >Comment puis-je dupliquer une structure avec des membres équivalents mais des types différents dans Go ?

Comment puis-je dupliquer une structure avec des membres équivalents mais des types différents dans Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-11 18:47:14747parcourir

How Can I Duplicate a Struct with Equivalent Members but Dissimilar Types in Go?

Duplication de structures avec des membres équivalents et des types différents

Considérez le scénario suivant : vous avez deux structures distinctes, Foo et Bar, chacune possédant des propriétés identiques. membres mais différant par leurs types sous-jacents. Votre objectif est de transférer le contenu d'une structure à l'autre.

Dans ce cas, considérez les définitions de structure suivantes :

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é les instances foo de Foo et bar de Bar, comment bar peut-il être dupliqué à partir de foo ?

Solution : conversion de type

Depuis la base Les types de Foo et Bar sont structurellement équivalents, une conversion de type peut être utilisée pour modifier le type d'objet. Le code suivant montre comment copier une valeur Foo en valeur Bar à l'aide de la conversion :

foo := Foo{Id: "123", Name: "Joe"}
bar := Bar(foo)

Note de compatibilité des types

Il est crucial de se rappeler que cette technique de conversion de type n'est efficace que lorsque les types sous-jacents des structures sont essentiellement identiques, à l'exception des balises struct.

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