Heim >Backend-Entwicklung >Golang >Wie entmarshaliere ich eingebettete Knoten unterschiedlichen Typs mithilfe von Schnittstellen in mgo (Go)?
So verwenden Sie eine Schnittstelle als Modell in mgo (Go)
Beim Umgang mit Workflows, die mehrere eingebettete Knoten unterschiedlichen Typs enthalten, Die Nutzung von Go-Schnittstellen ist ein gängiger Ansatz. Es stellt jedoch eine Herausforderung dar, wenn man versucht, diese Dokumente mit mgo zu entmarshalieren.
Um dieses Problem zu beheben, können Sie eine Schnittstelle nicht direkt in ein Dokument einbinden. Dies liegt daran, dass dem Decoder die notwendigen Typinformationen fehlen, um die entsprechende Instanz zu erstellen.
Eine praktikable Lösung besteht darin, eine Wrapper-Struktur zu erstellen, um sowohl den tatsächlichen Knoten als auch seinen Typ zu speichern:
type NodeWithType struct { Node Node `bson:"-"` Type string } type Workflow struct { CreatedAt time.Time StartedAt time.Time CreatedBy string Nodes []NodeWithType }
An Um die Einrichtung abzuschließen, müssen Sie die SetBSON-Funktion auf NodeWithType implementieren. Diese Funktion dekodiert die Typzeichenfolge, instanziiert den richtigen Knotentyp basierend auf dieser Zeichenfolge und entmarshmiert dann das Dokument in der neu erstellten Instanz. Durch die Implementierung von SetBSON wird sichergestellt, dass jeder eingebettete Knoten ordnungsgemäß in den richtigen konkreten Typ entmarshallt wird.
Das obige ist der detaillierte Inhalt vonWie entmarshaliere ich eingebettete Knoten unterschiedlichen Typs mithilfe von Schnittstellen in mgo (Go)?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!