GetAll:密钥和实体保证在同一个顺序?

时间:2013-03-03 02:10:08

标签: google-app-engine google-cloud-datastore go

我一直在使用它来加载实体,但仍然可以使用密钥:

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
}

然后我想知道我是否总能相信kp的顺序相同(即k[0]始终是{{1}的关键}})?如果我理解正确the appengine-go source表明会这样做,因为两个切片都是使用append构建的。它肯定似乎工作。

我在做什么安全吗?还有更好的方法吗?

1 个答案:

答案 0 :(得分:3)

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