Menggunakan Nested Structs dalam GAE Datastore dengan Go
Google App Engine datastore sememangnya tidak menyokong struct bersarang. Walau bagaimanapun, terdapat teknik untuk mencapai kefungsian ini dengan berkesan.
Satu pendekatan adalah dengan membenamkan maklumat pengguna dalam struct pos. Sebagai contoh, pertimbangkan definisi struct berikut:
<code class="go">type Post struct { Field1 string Field2 string User User // Nested user struct } type User struct { UserField1 string UserField2 string }</code>
Dengan menggunakan antara muka PropertyLoadSaver Go, anda boleh menyesuaikan cara struct anda disiri dan dinyahsiri daripada stor data. Ini membolehkan anda mengawal cara maklumat pengguna disimpan dan diambil semula.
<code class="go">// Implement PropertyLoadSaver interface to serialize/deserialize nested struct func (u *User) Load(props []datastore.Property) error { for _, prop := range props { switch prop.Name { case "UserField1": u.UserField1 = prop.Value.(string) case "UserField2": u.UserField2 = prop.Value.(string) } } return nil } func (u *User) Save() ([]datastore.Property, error) { props := []datastore.Property{ datastore.StringProperty("UserField1", u.UserField1), datastore.StringProperty("UserField2", u.UserField2), } return props, nil }</code>
Dengan melaksanakan antara muka ini, anda boleh memastikan bahawa maklumat pengguna disimpan sebagai sifat bersarang dalam entiti Post. Struktur ini membolehkan anda membuat pertanyaan dan mendapatkan semula maklumat pengguna bersarang bersama-sama data siaran dengan cekap.
<code class="go">// Fetch the post and its embedded user information key := datastore.NameKey("Post", "my-post", nil) post := &Post{} if err := datastore.Get(ctx, key, post); err != nil { // Handle error } // JSON Marshal the post with its embedded user information jsonPost, err := json.Marshal(post) if err != nil { // Handle error }</code>
Pendekatan ini menyediakan penyelesaian yang fleksibel dan cekap untuk bekerja dengan struct bersarang dalam stor data GAE menggunakan Go.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Struktur Bersarang dengan Berkesan dalam Google App Engine Datastore dengan Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!