Python의 App Engine에서 Expando 모델을 사용하면 사전 선언 없이 항목에 속성을 동적으로 할당할 수 있습니다. 이 기사에서는 Google App Engine Datastore를 사용하여 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 Datastore에서 동적 엔터티를 어떻게 만들 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!