質問:
Google App Engine でネストされた構造体を使用するにはどうすればよいですかGo を使用する場合、(GAE) データストアを使用しますか?
回答:
Go のデータストア API は、ネストされた構造体を直接サポートしません。ただし、解決策は、API によって提供される PropertyLoadSaver インターフェイスを利用することです。
実装:
例:
<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>
この実装により、データストアのフィルタリング機能とクエリ機能を活用しながら、構造化された方法でネストされた構造体を保存および取得できます。
以上がGo を使用して Google App Engine (GAE) データストアでネストされた構造体を操作するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。