Python の App Engine では、Expando モデルを使用すると、事前の宣言なしでエンティティに属性を動的に割り当てることができます。この記事では、Google App Engine データストアを使用して Go で同様の機能を実現する方法について説明します。
Go で動的エンティティを定義するための鍵は、PropertyLoadSaver インターフェイスです。このインターフェイスを実装すると、保存時にエンティティのプロパティを動的に構築できるようになります。
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 インターフェイスを実装できます。
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 サイトの他の関連記事を参照してください。