是否有更通用的方法来执行此功能?

时间:2016-11-29 14:48:39

标签: pointers go reflection struct

我想让这个功能更通用(带有“for”)

func (e example) ScanRow(rows *sql.Rows) (example, error) {
    val := reflect.ValueOf(e)
    test := make([]interface{}, val.Type().NumField())

    test[0] = &e.Id
    test[1] = &e.CreatedAt
    test[2] = &e.Text
    test[3] = &e.AuthorId
    test[4] = &e.CategoryId

    if err := rows.Scan(test[0], test[1], test[2], test[3], test[4]); err != nil {
        return e, err
    }
    return e, nil
}

这是结构示例:

type example struct {
    Id      int `json:"id"`
    CreatedAt   string `json:"created_at"`
    Text        string `json:"text"`
    AuthorId    int `json:"author_id"`
    CategoryId  int `json:"category_id"`
}

你认为这可能吗?我正试图找到一种方法来做到这一点,但我迷失了......

0 个答案:

没有答案