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

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

Patricia Arquette
Patricia Arquetteoriginal
2024-12-10 13:07:10316parcourir

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

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

Lors de la transmission de données à la fonction datastore.PutMulti d'AppEngine, cela nécessite une tranche d'[]interface{}. Cependant, cela peut entraîner des erreurs de compilation si vous tentez d'attribuer une tranche de structures, []*MyStruct, à la tranche []interface{}.

L'erreur survient car le compilateur Go considère ces deux types comme incompatibles. , ce qui entraîne l'échec de l'attribution de src à dest.

Solution

Malheureusement, il n'existe aucun moyen direct de copier une tranche de structure dans une tranche d'interface vide sans copier chaque élément individuellement. En effet, la conversion d'une structure vers une interface crée une version encapsulée de la structure. Une interface contient un pointeur vers le type d'origine et un descripteur pour le type lui-même. Par conséquent, pour envelopper correctement chaque structure, vous devez les copier une par une.

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