Google app engine 将reflect.Value传递到Google应用程序引擎中的datastore.GetMulti
我有一个包装函数Google app engine 将reflect.Value传递到Google应用程序引擎中的datastore.GetMulti,google-app-engine,go,Google App Engine,Go,我有一个包装函数mypkg.GetStart。包装器函数的参数必须与appengine.GetMulti相同。为了这个例子,我想得到dst的前两个实体。我的代码目前如下所示,但不起作用数据存储。GetMulti生成错误数据存储:dst的类型无效 type myEntity struct { Val Int } keys := []*datastore.Key{keyOne, keyTwo, keyThree} entities := make([]myEntity, 3) mypkg.
mypkg.GetStart
。包装器函数的参数必须与appengine.GetMulti
相同。为了这个例子,我想得到dst
的前两个实体。我的代码目前如下所示,但不起作用<代码>数据存储。GetMulti生成错误数据存储:dst的类型无效
type myEntity struct {
Val Int
}
keys := []*datastore.Key{keyOne, keyTwo, keyThree}
entities := make([]myEntity, 3)
mypkg.GetStart(c, keys, enities)
我的mypkg.GetStart
代码如下:
func GetStart(c appengine.Context, keys []*datastore.Key, dst interface{}) error{
v := reflect.ValueOf(dst)
dstSlice := v.Slice(0, 2)
return datastore.GetMulti(c, keys, dstSlice)
}
我怎样才能做到这一点?注意:这是对的后续问题,我通过将
Interface()
添加到dstSlice
,实现了这一点:
func GetStart(c appengine.Context, keys []*datastore.Key, dst interface{}) error{
v := reflect.ValueOf(dst)
dstSlice := v.Slice(0, 2)
return datastore.GetMulti(c, keys, dstSlice.Interface())
}