はじめに Datastoreで1エンティティ毎Getするのは非効率で、一括で取得することが推奨されているようです。 Stackdriverトレースでも複数回Getしているものは、一括で処理するようにアドバイスされます。 そこで複数回Getしていたものを、GetMultiを使用して一括処理しようとした際にハマったポイントについてまとめました。 まずコードを書いてみる 下記のように実装しましたが、私が想定したように動いてくれませんでした。 func GetUsers(ctx context.Context, userIds []string) ([]*UserKind, err) { var keys []*datastore.Key for _, id := range userIds { keys = append(keys, datastore.NewKey(ctx, "User", i