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
Patricia Arquetteoriginal
2024-12-13 16:19:10121parcourir

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 :

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
}

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 :

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

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

<br>package main</p>
<p>import "fmt"</p>
<p>type Structure commune {</p>
<pre class="brush:php;toolbar:false">Gender int
From   string
To     string

}

type Foo struct {

Id    string
Name  string
Extra Common

}

type Bar struct {

Id    string
Name  string
Extra Common

>

func main() {

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

fmt.Println(bar)

}

Sortie

{123 Joe {0 "" ""}}

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:
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