In Pythons App Engine ermöglicht das Expando-Modell die dynamische Zuweisung von Attributen zu Entitäten ohne vorherige Deklaration. In diesem Artikel wird untersucht, wie Sie mit dem Google App Engine Datastore eine ähnliche Funktionalität in Go erreichen.
Der Schlüssel zum Definieren dynamischer Entitäten in Go ist die PropertyLoadSaver-Schnittstelle. Durch die Implementierung dieser Schnittstelle erhalten Sie die Möglichkeit, die Eigenschaften einer Entität dynamisch und zeitsparend zu erstellen.
Die Go App Engine-Plattform bietet den PropertyList-Typ, der ist eine Liste von Property-Instanzen und implementiert die PropertyLoadSaver-Schnittstelle. Durch die Nutzung von PropertyList können Sie dynamische Entitäten erstellen, ohne die Schnittstelle selbst zu implementieren.
props := datastore.PropertyList{ {Name: "time", Value: time.Now()}, {Name: "email", Value: "johndoe@example.com"}, }
Um diese Liste als Entität zu speichern, können Sie Folgendes verwenden:
key, err := datastore.Put(c, k, &props)
Für weitere Flexibilität können Sie die PropertyLoadSaver-Schnittstelle für Ihre eigenen benutzerdefinierten Typen implementieren, z Karten.
type DynEnt map[string]interface{} func (d *DynEnt) Load(props []datastore.Property) error { for _, p := range props { (*d)[p.Name] = p.Value } return nil } func (d *DynEnt) Save() (props []datastore.Property, err error) { for k, v := range *d { props = append(props, datastore.Property{Name: k, Value: v}) } return }
Mit dieser benutzerdefinierten Implementierung können Sie dynamische Entitäten jetzt problemlos laden und speichern:
d := DynEnt{"email": "johndoe@example.com", "time": time.Now()} key, err := datastore.Put(c, k, &d)
Dieser Ansatz gewährt Ihnen die volle Kontrolle über die Eigenschaftsdefinitionen Ihrer dynamischen Entitäten .
Das obige ist der detaillierte Inhalt vonWie kann ich dynamische Entitäten im Google App Engine-Datenspeicher von Go erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!