Maison > développement back-end > Golang > Comment puis-je transférer efficacement des données entre des structures Go avec des membres identiques mais de types différents ?

Comment puis-je transférer efficacement des données entre des structures Go avec des membres identiques mais de types différents ?

Patricia Arquette
Libérer: 2024-12-10 02:18:13
original
519 Les gens l'ont consulté

How Can I Efficiently Transfer Data Between Go Structs with Identical Members but Different Types?

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
}
Copier après la connexion

É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)
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal