Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Melaksanakan Sifat Dinamik dalam Google App Engine Datastore Go?

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

Barbara Streisand
Barbara Streisandasal
2024-11-23 22:02:11472semak imbas

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
    }
    // ...
}

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
}

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
    }
    // ...
}

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!

Kenyataan:
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