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

Comment puis-je convertir efficacement entre des structures Go avec des membres identiques mais des types différents ?

Patricia Arquette
Libérer: 2024-12-13 16:19:10
original
206 Les gens l'ont consulté

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

Conversion de structures avec des membres identiques mais des types différents

Dans Go, vous pouvez rencontrer des situations où vous avez deux structures avec des membres identiques mais des types différents . Cela peut poser un défi lorsque vous devez copier les valeurs d'une structure à une autre.

Exemple de cas d'utilisation

Considérez l'exemple suivant :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

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

Supposons que vous ayez une variable foo de type Foo et que vous souhaitiez copier ses valeurs dans une variable bar de type Bar.

Approche de conversion

Étant donné que les types sous-jacents de Foo et Bar sont identiques à l'exception des balises struct, vous pouvez utiliser une conversion de type pour copier les valeurs. Voici comment procéder :

1

2

foo := Foo{Id: "123", Name: "Joe"}

bar := Bar(foo)

Copier après la connexion

Dans le code ci-dessus, la conversion Bar(foo) convertit explicitement la valeur de foo du type Foo en Bar. Ceci est possible car les types sous-jacents sont identiques.

Exemple de terrain de jeu

1

2

3

4

5

6

<br>package main</p>

<p>import "fmt"</p>

<p>type Structure commune {</p>

<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">Gender int

From   string

To     string

Copier après la connexion

}

type Foo struct {

1

2

3

Id    string

Name  string

Extra Common

Copier après la connexion
Copier après la connexion

}

type Bar struct {

1

2

3

Id    string

Name  string

Extra Common

Copier après la connexion
Copier après la connexion

>

func main() {

1

2

3

4

foo := Foo{Id: "123", Name: "Joe"}

bar := Bar(foo)

 

fmt.Println(bar)

Copier après la connexion

}

Sortie

1

{123 Joe {0 "" ""}}

Copier après la connexion

Comme vous pouvez le voir, les valeurs de foo ont été copiés avec succès vers bar.

Remarque :

L'approche de conversion ne fonctionne que lorsque les types sous-jacents des structures sont identiques, à l'exception des balises de structure. Si les types sous-jacents sont différents, vous devrez copier manuellement les valeurs membre par membre.

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 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
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal