Comment utiliser une interface comme modèle dans mgo (Go)
Lorsque vous traitez des flux de travail contenant plusieurs nœuds intégrés de différents types, tirer parti des interfaces Go est une approche courante. Cependant, cela présente un défi lorsque l'on tente de désorganiser ces documents à l'aide de mgo.
Pour résoudre ce problème, vous ne pouvez pas inclure directement une interface dans un document. En effet, le décodeur ne dispose pas des informations de type nécessaires pour créer l'instance appropriée.
Une solution viable consiste à créer une structure wrapper pour stocker à la fois le nœud réel et son type :
type NodeWithType struct { Node Node `bson:"-"` Type string } type Workflow struct { CreatedAt time.Time StartedAt time.Time CreatedBy string Nodes []NodeWithType }
Pour terminez la configuration, vous devez implémenter la fonction SetBSON sur NodeWithType. Cette fonction décodera la chaîne de type, instanciera le type de nœud correct en fonction de cette chaîne, puis désorganisera le document dans l'instance nouvellement créée. L'implémentation de SetBSON garantit que chaque nœud intégré est correctement désorganisé dans le bon type de béton.
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!