考虑以下两种选择。
A)将密钥存储在结构中。
type Point struct {
Place *datastore.Key
Lat float64
Lon float64
}
然后使用密钥获取:
place := new(Place)
if err := datastore.Get(c, k, point.Place); err != nil {
return err
}
B) 存储 id
type Point struct {
Place int64
Lat float64
Lon float64
}
然后在创建密钥后获取。
k := datastore.NewKey(c, "Place", "", point.Place, nil)
place := new(Place)
if err := datastore.Get(c, k, place); err != nil {
return err
}
存储密钥而不是 id 会占用更多空间。为了看到权衡,最好了解创建密钥需要多少资源。换句话说,创建密钥真的很便宜,还是创建一次并存储它更好?
使用单个键,可能无关紧要,但是假设我获取点列表,并且对于每个点,我都想检索该位置(即循环遍历点以构建键数组并获取它们)。
编辑:我没有考虑在这里分配 ID 或键,只使用它们(即所有点和位置都已经在数据存储中,问题只是存储 id 还是整个键)。
前动画,亚历山大·英灵