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 terminer 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 type concret correct.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3