有一个需求,用户配置查询sql,查询结果入库表名,根据这个需求我创建了入库表结构体,查询func、但是golang的方法参数必须指定类型,入库表类型我是不能确定的。这种需求大家怎么处理的?
相关代码
//report_data_1 入库表结构体1
type ReportData1 struct {
Id int64 `json:"id"`
Date string `json:"date"`
Impressions int64 `json:"impressions"`
Click int64 `json:"click"`
}
//report_data2 入库表结构2
type ReportData2 struct {
Id int64 `json:"id"`
Date string `json:"date"`
Impressions int64 `json:"impressions"`
Click int64 `json:"click"`
}
//伪代码 但是这里必须制定一个表结构?我的结构不确定
func request(tableStruct ReportData1){
gorm.Where().Find(&tableStruct)
}
request 方法需要查询N种表结构,查询完毕的数据会有其他方法接收查询数据进行入库。
我试过传递interface{}方式,但是到了request方法内部还是要转成struct结构进行查询,这样的话,其他方法里面还需要再写相同的代码判断是哪种结构体。
写的可能有点绕,不知道大家理解了吗0 _ 0
楼上说的对,将 request 方法中的
tableStruct
参数的类型修改为 interface{} 即可。我改一下你的代码,如下:使用的时候,只要向下面这样就好了。
或者
你可以试一下。