Maison >développement back-end >Golang >Comment puis-je convertir une tranche de structures en une tranche d'interfaces vides dans Go ?

Comment puis-je convertir une tranche de structures en une tranche d'interfaces vides dans Go ?

DDD
DDDoriginal
2024-12-05 10:07:15380parcourir

How Can I Convert a Slice of Structs to a Slice of Empty Interfaces in Go?

Conversion d'une tranche de structures en tranche d'interface vide

L'attribution d'une tranche de structures à une tranche d'interfaces vides n'est pas simple en raison du type incompatibilité, comme le montre le code suivant :

type MyStruct struct {
    // ...
}

var src []*MyStruct
var dest []interface{}
dest = src  // Compilation error

Cette erreur survient car le compilateur identifie les deux types comme incompatibles. Pour résoudre ce problème, il faut copier chaque élément manuellement :

for _, s := range src {
    dest = append(dest, s)
}

Malgré la fastidité de copier les éléments un par un, cela est nécessaire car le cast d'une structure vers une interface implique d'envelopper la structure dans un pointeur d'interface et de taper descripteur. Copier chaque élément séparément garantit que ce processus d'emballage est effectué correctement.

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