最初在 Python 中创建时,如何在 Go 中使用数据存储 GAE?

How to use datastore GAE in Go when initially it was created in Python?

我有一个数据存储类型 "Items",它是在 Python 中创建的,在此代码中不要在 Go 中迭代数据 q.Run()(它是版本 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)
    }

数据存储包在从数据存储读取实体时使用反射来填充结构字段。在 Go 中,名称以小写字母开头的结构字段不会被导出。未导出的字段不能从定义它们的包以外的包中设置。

只有导出的字段(以大写字母开头)可以存储在数据存储中/从数据存储中检索。您可以使用标签来判断 属性 在数据存储中的名称,以防它与字段名称不同。因此,您必须将 Items 结构更改为:

type Items struct {
    Code string    `datastore:"code"`
    Date time.Time `datastore:"date"`
    Name string    `datastore:"name"`
}