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!