Maison >développement back-end >Golang >Comment puis-je convertir efficacement entre des structures Go avec des membres identiques mais des types différents ?
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!