질문:
Google App Engine에서 중첩 구조체를 어떻게 사용할 수 있나요? (GAE) Go로 작업할 때 데이터 저장소가 있습니까?
답변:
Go의 Datastore API는 중첩된 구조체를 직접 지원하지 않습니다. 그러나 해결책은 API에서 제공하는 PropertyLoadSaver 인터페이스를 활용하는 것입니다.
구현:
예 :
<code class="go">type Post struct { Field1 string Field2 string User User } type User struct { UserField1 string UserField2 string } func (p Post) Load(ps []Property) error { for _, prop := range ps { switch prop.Name { case "Field1": p.Field1 = prop.Value.(string) case "Field2": p.Field2 = prop.Value.(string) case "User": if err := prop.Load(&p.User); err != nil { return err } } } return nil } func (p Post) Save() ([]Property, error) { props := []Property{ {Name: "Field1", Value: p.Field1}, {Name: "Field2", Value: p.Field2}, } pLoad, err := appengine.Datastore().SaveStruct(p.User) if err != nil { return nil, err } props = append(props, pLoad...) return props, nil } // Usage key := datastore.NewKey("Post", "someID", nil) _, err := datastore.Put(ctx, key, &post)</code>
이 구현을 통해 중첩된 구조체를 구조화된 방식으로 저장하고 검색하는 동시에 Datastore의 필터링 및 쿼리 기능을 활용할 수 있습니다.
위 내용은 Go를 사용하여 Google App Engine(GAE) Datastore에서 중첩된 구조체로 작업하려면 어떻게 해야 하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!