2013-03-03 24 views
4

我一直在使用這種加載實體,仍然有可用的鍵: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]的關鍵)?如果我理解正確the appengine-go source暗示它會,因爲兩個切片都使用append構建。當然似乎工作。

我在做什麼安全?有沒有更好的辦法?

回答

3

是的,GetAll返回的密鑰的順序與附加到dst的值的順序相同。

+0

謝謝,感謝。 – 2013-03-04 06:29:45

相關問題