ホームページ >バックエンド開発 >Golang >Go の Google App Engine データストアで動的エンティティを作成するにはどうすればよいですか?

Go の Google App Engine データストアで動的エンティティを作成するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-25 15:29:11773ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。