Closed wleven closed 5 years ago
@wleven 当然不能这么写,参见 gorm 源码,如下:
...
if kind := results.Kind(); kind == reflect.Slice {
isSlice = true
resultType = results.Type().Elem()
results.Set(reflect.MakeSlice(results.Type(), 0, 0))
if resultType.Kind() == reflect.Ptr {
isPtr = true
resultType = resultType.Elem()
}
} else if kind != reflect.Struct {
scope.Err(errors.New("unsupported destination, should be slice or struct"))
return
}
主要是因为如果你赋 interface 会对 ORM 转换带来一系列的麻烦,如果你真的想要用 interface 入参的话,建议你再加一个转换函数,最终返回给 db.Find
的应该是一个具体的 struct 或 slice 即可。
想封装一个查询方法,传入一个结构体,然后返回对应的数据。但是报错
unsupported destination, should be slice or struct
,怎么把interface 转成 struct 类型,还是不能这样写 ,应该怎么封装呢