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?
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.
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."
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!