Soalan:
Bagaimana saya boleh menggunakan struct bersarang dengan Enjin Aplikasi Google (GAE) stor data semasa bekerja dengan Go?
Jawapan:
API Datastore dalam Go tidak menyokong struct bersarang secara langsung. Walau bagaimanapun, penyelesaiannya ialah menggunakan antara muka PropertyLoadSaver yang disediakan oleh API.
Pelaksanaan:
Contoh :
<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>
Pelaksanaan ini membolehkan anda menyimpan dan mendapatkan semula struct bersarang dalam cara berstruktur, sambil masih mendapat manfaat daripada keupayaan penapisan dan pertanyaan Datastore.
Atas ialah kandungan terperinci Bagaimanakah cara saya bekerja dengan struct bersarang dalam Google App Engine (GAE) Datastore menggunakan Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!