Heim >Backend-Entwicklung >Golang >Wie arbeite ich mit Go mit verschachtelten Strukturen im Google App Engine (GAE)-Datenspeicher?
Frage:
Wie kann ich verschachtelte Strukturen mit der Google App Engine verwenden? (GAE)-Datenspeicher beim Arbeiten mit Go?
Antwort:
Die Datastore-API in Go unterstützt verschachtelte Strukturen nicht direkt. Eine Lösung besteht jedoch darin, die von der API bereitgestellte PropertyLoadSaver-Schnittstelle zu verwenden.
Implementierung:
Beispiel :
<code class="go">type Post struct { Field1 string Field2 string User User } type User struct { UserField1 string UserField2 string } func (p Post) Load(ps []Property) error { for _, prop := range ps { switch prop.Name { case "Field1": p.Field1 = prop.Value.(string) case "Field2": p.Field2 = prop.Value.(string) case "User": if err := prop.Load(&p.User); err != nil { return err } } } return nil } func (p Post) Save() ([]Property, error) { props := []Property{ {Name: "Field1", Value: p.Field1}, {Name: "Field2", Value: p.Field2}, } pLoad, err := appengine.Datastore().SaveStruct(p.User) if err != nil { return nil, err } props = append(props, pLoad...) return props, nil } // Usage key := datastore.NewKey("Post", "someID", nil) _, err := datastore.Put(ctx, key, &post)</code>
Mit dieser Implementierung können Sie verschachtelte Strukturen strukturiert speichern und abrufen und gleichzeitig von den Filter- und Abfragefunktionen von Datastore profitieren.
Das obige ist der detaillierte Inhalt vonWie arbeite ich mit Go mit verschachtelten Strukturen im Google App Engine (GAE)-Datenspeicher?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!