在Go语言中如何从for循环中返回接口列表?假设我有如下数据:
| 身份证|姓名|项目类型|
| - ------|- ------|- ------|
| 1个|项目名称|1个|
| 第二章|项目名称|1个|
| 三个|项目名称|1个|
| 四个|项目名称|第二章|
| 五个|项目名称|第二章|
| 六个|项目名称|三个|
| 七|项目名称|三个|
| 八个|项目名称|三个|
| 九|项目名称|四个|
| 十个|项目名称|四个|
我可以使用下面的代码来获得project_type=1和project_type=2的两个列表,
func (d *db) ProjectList(Type, uid string, size uint64) (interface{}, interface{}, error) {
type resp struct {
Name string `json:"name"`
Id string `json:"id"`
ProjectType string `json:"project_type"`
}
var project_type_1 []*resp
var project_type_2 []*resp
sql = fmt.Sprintf(sql, where.String())
_, err := d.ctx.DB().SelectBySql("select * from project where project_type=1 order by rand() limit 10").Load(&project_type_1)
_, err = d.ctx.DB().SelectBySql("select * from project where project_type=2 order by rand() limit 10").Load(&project_type_2)
return project_type_1, project_type_2, err
}
但是现在project_type的数据是[{"project_type":1,"name":"something else"},{"project_type":2,"name":"something else"},{"project_type":3,"name":"something else"},{"project_type":4,"name":"something else"}]
的JSON,project_type大于2,我必须得到一个interface{}列表,我试着重写代码如下,但是我不知道下一步怎么写,如何从Go语言的for循环中返回interface列表?,非常感谢你的建议。
func NewProjectList(d *db) ([]interface{}, error) {
var s = make([]ProjectType, 0)
data, err := d.QueryString("project_type")
if err != nil {
return nil, err
}
err = json.Unmarshal([]byte(data), &s)
if err != nil {
return nil, err
}
for _, shortType := range s {
fmt.Println("this is shortType", shortType)
}
return nil, err
}
1条答案
按热度按时间p8h8hvxi1#
如果希望每个project_type具有10个结果(全部10*n个结果):
如果所有类型共10个结果: