Bagaimana untuk Melaksanakan Sifat Dinamik dalam Google App Engine Datastore Go?

Barbara Streisand
Lepaskan: 2024-11-23 22:02:11
asal
389 orang telah melayarinya

How to Implement Dynamic Properties in Go's Google App Engine Datastore?

Mencapai Sifat Dinamik dalam Go on Google App Engine Datastore

Dalam Enjin Apl Python, Model Expando menawarkan kemudahan untuk memberikan sifat dinamik kepada entiti tanpa pengisytiharan awal. Bagaimanakah kita boleh meniru fungsi ini dalam Go?

Melaksanakan Sifat Dinamik

Kunci untuk mencapai sifat dinamik dalam Go ialah antara muka PropertyLoadSaver. Ia membolehkan entiti membina sifat secara dinamik sebelum ia disimpan.

Mujurlah, platform AppEngine menyediakan jenis PropertyList, yang melaksanakan antara muka PropertyLoadSaver. Menggunakan PropertyList, anda boleh menambah sifat dinamik dengan mudah dengan hanya menambahkannya pada senarai.

Menyimpan Entiti dengan Sifat Dinamik

Mari kita teliti contoh:

import (
    "context"
    "time"

    datastore "google.golang.org/appengine/datastore"
)

func main() {
    ctx := context.Background()

    props := datastore.PropertyList{
        datastore.Property{Name: "time", Value: time.Now()},
        datastore.Property{Name: "email", Value: "example@domain.com"},
    }

    k := datastore.NewIncompleteKey(ctx, "DynEntity", nil)
    key, err := datastore.Put(ctx, k, &props)
    if err != nil {
        // Handle the error
    }
    // ...
}
Salin selepas log masuk

Kod ini mencipta entiti bernama "DynEntity" dengan dua sifat dinamik: "masa" dan "e-mel."

Menggunakan Jenis Tersuai untuk Entiti Dinamik

Jika anda memerlukan lebih kawalan ke atas entiti dinamik, anda boleh melaksanakan antara muka PropertyLoadSaver pada jenis tersuai. Sebagai contoh, mari kita tentukan jenis DynEnt tersuai yang membungkus peta:

type DynEnt map[string]interface{}

func (d *DynEnt) Load(props []datastore.Property) error {
    // ... Your implementation
}

func (d *DynEnt) Save() (props []datastore.Property, err error) {
    // ... Your implementation
}
Salin selepas log masuk

Kini, anda boleh menggunakan DynEnt seperti berikut:

import (
    "context"
    "time"

    datastore "google.golang.org/appengine/datastore"
)

func main() {
    ctx := context.Background()

    d := DynEnt{"email": "example@domain.com", "time": time.Now()}

    k := datastore.NewIncompleteKey(ctx, "DynEntity", nil)
    key, err := datastore.Put(ctx, k, &d)
    if err != nil {
        // Handle the error
    }
    // ...
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Sifat Dinamik dalam Google App Engine Datastore 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