小编典典

在Google App Engine中将reflect.Value传递到datastore.GetMulti

go

我有一个包装函数mypkg.GetStart周围datastore.GetMulti。包装函数的参数必须与相同appengine.GetMulti。就dst本例而言,我想获得的前两个实体。我的代码当前如下所示,但不起作用。datastore.GetMulti产生错误datastore: dst has invalid type

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)
}

阅读 292

收藏
2020-07-02

共1个答案

小编典典

我通过添加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())
}
2020-07-02