4

我一直在使用它来加载实体并且仍然有可用的密钥:

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 构建的。它似乎确实有效。

我做的安全吗?有没有更好的办法?

4

1 回答 1

3

是的,GetAll返回的键将与附加到 dst 的值的顺序相同。

于 2013-03-03T21:13:11.553 回答