我有一个"Items"用 Python 创建的数据存储类型,在此代码中不要q.Run()在 Go 中迭代数据(它的版本 2):type Items struct{ code string date time.Time name string}func getcode(w http.ResponseWriter, r *http.Request) { code := mux.Vars(r)["code"] fmt.Fprintf(w,"get code %v",code) c := appengine.NewContext(r) q := datastore.NewQuery("Items") for t := q.Run(c); ; { var x Items key, err := t.Next(&x) fmt.Fprintf(w,"%v",key) if err == datastore.Done { break } if err != nil { //serveError(c, w, err) return } fmt.Fprintf(w, "Code=%v\n", x.code) }
1 回答
白板的微信
TA贡献1883条经验 获得超3个赞
从数据存储区读取实体时,数据存储区包使用反射来填充结构体字段。在 Go 中,名称以小写字母开头的结构字段不会被导出。无法从定义它们的包以外的包中设置未导出的字段。
只有导出的字段(以大写字母开头)才能存储在数据存储中/从数据存储中检索。您可以使用标签来判断数据存储中的属性名称是什么,以防它与字段名称不同。因此,您必须将Items结构更改为:
type Items struct {
Code string `datastore:"code"`
Date time.Time `datastore:"date"`
Name string `datastore:"name"`
}
- 1 回答
- 0 关注
- 153 浏览
添加回答
举报
0/150
提交
取消