Dans Go, l'attribution d'un tableau de structures directement à un tableau d'interface génère une erreur de compilation. Pour comprendre pourquoi, examinons les mécanismes sous-jacents.
interface{} représente un type générique qui peut stocker n'importe quelle valeur. Cependant, il est représenté en interne sous la forme d'une paire de deux mots :
Contrairement aux interfaces, les structures stockent leurs champs de manière contiguë en mémoire, sans mot de type distinct.
Étant donné que les structures et les interfaces ont des représentations en mémoire différentes, elles ne peut pas être attribué directement. Le système de types garantit cela pour maintenir la sécurité des types.
Pour obtenir le comportement souhaité, envisagez ces options :
Utilisation d'une tranche d'interfaces
Vous pouvez créer une tranche d'interfaces et attribuer les éléments de structure individuellement :
y := make([]interface{}, len(x)) for i, v := range x { y[i] = v }
Stockage d'une interface dans la tranche
Vous pouvez également stocker une interface dans la tranche struct :
var y interface{} y = x
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!