GetAll:保证键和实体的顺序相同吗?

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


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


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


婷婷同学_
浏览 198回答 1
1回答

ITMISS

是的,GetAll返回的键将与附加到dst的值的顺序相同。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go