Question :
Comment puis-je utiliser des structures imbriquées avec Google App Engine (GAE) lorsque vous travaillez avec Go ?
Réponse :
L'API Datastore dans Go ne prend pas directement en charge les structures imbriquées. Cependant, une solution consiste à utiliser l'interface PropertyLoadSaver fournie par l'API.
Mise en œuvre :
Exemple :
<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>
Cette implémentation vous permet de stocker et de récupérer des structures imbriquées de manière structurée, tout en bénéficiant des capacités de filtrage et de requête de Datastore.
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!