首頁 > 後端開發 > Golang > 如何在 Go 的 Google App Engine 資料儲存中建立動態實體?

如何在 Go 的 Google App Engine 資料儲存中建立動態實體?

Mary-Kate Olsen
發布: 2024-11-25 15:29:11
原創
719 人瀏覽過

How Can I Create Dynamic Entities in Go's Google App Engine Datastore?

在Go 的Google App Engine 資料儲存區實現動態屬性

在Python 的App Engine 中,Expando 模型無需事先聲明即可將屬性動態分配給實體。本文探討如何使用 Google App Engine 資料儲存在 Go 中實現類似的功能。

PropertyLoadSaver 介面

在 Go 中定義動態實體的關鍵是 PropertyLoadSaver 介面。透過實現此接口,您可以在節省時間的情況下動態建構實體的屬性。

使用 Go App Engine 平台中的 PropertyList

Go App Engine 平台提供 PropertyList 類型,該類型是 Property 實例的列表,並實作 PropertyLoadSaver 介面。透過利用 PropertyList,您可以建立動態實體,而無需自己實作介面。

props := datastore.PropertyList{
    {Name: "time", Value: time.Now()},
    {Name: "email", Value: "johndoe@example.com"},
}
登入後複製

要將此清單儲存為實體,您可以使用:

key, err := datastore.Put(c, k, &props)
登入後複製

為自訂類型實作PropertyLoadSaver

為了獲得更大的彈性,您可以在自己的自訂類型上實作PropertyLoadSaver 接口,例如地圖。

type DynEnt map[string]interface{}

func (d *DynEnt) Load(props []datastore.Property) error {
    for _, p := range props {
        (*d)[p.Name] = p.Value
    }
    return nil
}

func (d *DynEnt) Save() (props []datastore.Property, err error) {
    for k, v := range *d {
        props = append(props, datastore.Property{Name: k, Value: v})
    }
    return
}
登入後複製

透過此自訂實現,您現在可以輕鬆載入和儲存動態實體:

d := DynEnt{"email": "johndoe@example.com", "time": time.Now()}
key, err := datastore.Put(c, k, &d)
登入後複製

此方法可讓您完全控制動態實體的屬性定義.

以上是如何在 Go 的 Google App Engine 資料儲存中建立動態實體?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板