从SQL QueryRow结果动态生成结构字段

时间:2017-09-16 16:46:36

标签: go struct

我想检索该行的所有字段,然后将它们渲染为html。我知道怎么做,这里是一个包含3个字段的行的代码:

type View struct {
    Id         int
    Name_and_requisits string
    Reg_Date  string
}
func getViewById(id int) (*View, error){
    var vie View
    row := db.QueryRow("select id, name_and_requisits, reg_date from book where id = ?;", id)
    err := row.Scan(&vie.Id, &vie.Name_and_requisites, &vie.Reg_Date)
    if err != nil {
        return nil, err
    }

    return &vie, nil
}

但在我的表中,一行包含大约20列,我需要他们所有的名字,但我不想创建一个nasted硬编码结构。我有一个想法,就是从列的名称动态生成struct字段,然后在其上使用row.Scan。有任何想法吗?也许地图对这种情况更好?

谢谢!

1 个答案:

答案 0 :(得分:4)

  

动态生成结构域

https://golang.org/pkg/reflect/#StructOf

但请:不要这样做。