次の 2 つの代替案を検討してください。
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 を保存するか、キー全体を保存するかだけです)。
Ex animo、アレクサンダー・イングリング