我一直在使用它来加载实体并且仍然有可用的密钥:
type Post struct {
Title string
Created time.Time
// ...
key *datastore.Key
}
func All(c appengine.Context) (*[]Post, error) {
var p []Post
q := datastore.NewQuery("Post").Order("-Created")
k, err := q.GetAll(c, &p)
if err != nil {
return nil, err
}
for i := 0; i < len(p); i++ {
p[i].key = k[i]
}
return &p, nil
}
然后我想知道我是否可以始终相信它k
的顺序与p
(即,k[0]
始终是 的关键p[0]
)相同?如果我理解正确,appengine-go 源代码会建议,因为这两个切片都是使用 append 构建的。它似乎确实有效。
我做的安全吗?有没有更好的办法?