Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah cara saya bekerja dengan struct bersarang dalam Google App Engine (GAE) Datastore menggunakan Go?

Bagaimanakah cara saya bekerja dengan struct bersarang dalam Google App Engine (GAE) Datastore menggunakan Go?

Linda Hamilton
Lepaskan: 2024-10-27 02:20:03
asal
337 orang telah melayarinya

How do I work with nested structs in the Google App Engine (GAE) Datastore using Go?

Struktur Bersarang dalam GAE Datastore dengan Go

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:

  1. Tentukan struktur data anda mengikut kehendak anda, termasuk struct bersarang .
  2. Laksanakan kaedah Muat dan Simpan antara muka PropertyLoadSaver untuk struct utama anda. Kaedah ini akan bertanggungjawab untuk mensiri dan menyahsiri struct bersarang.
  3. Gunakan kaedah AddPropertyLoadSaver pada objek Key untuk mendaftarkan pelaksanaan PropertyLoadSaver untuk struct utama anda.

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan