想请教一下问题,我想对beego的orm再封装一层,方便使用,可参数类型限制编译不过,不知道怎么改了。
```
举例说明,现有两个数据模型:
// 模型1:
type Post struct {
Id int
Title string
Content string
Status int
}
// 获取数据集
var posts []Post
orm.NewOrm().QueryTable("post").Filter("Status", 1).All(&posts)
// 模型2:
type News struct {
Id int
Title string
Content string
Status int
}
// 获取数据集合
var news []News
orm.NewOrm().QueryTable("post").Filter("Status", 1).All(&news)
```
想着对orm进行再次封装,以便方便调用, 比如抽象出一个方法:
```
func GetDataList(tableName string, dataList interface{}) (datalist interface{}) {
orm.NewOrm().QueryTable(tableName).Filter("Status", 1).All(&datalist)
return datalist
}
```
意想中的调用方式是这样:
```
var posts []Post
fmt.Println(GetDataList("post", post))
var news []News
fmt.Println(GetDataList("news", news))
```
可事实发现编译不过~报错信息:
```
wrong object type `*interface {}` for rows scan, need *backend-api/models.post
```
想问一下在go中这样一般怎么写?
别封装了, golang不是OOP的语言 也没有泛型, 能用到interface已经是最高级别的封装形式了.
你只要别传interface{}的指针就OK了.
#3
更多评论
楼主对 interface知之甚少, 如果已经作为interface使用了 是不能再&传它的指针的.
你啥时候见过传interface{}类型的指针的这种用法啊?
#1