登录
首页 >  Golang >  Go问答

我怎样才能将 gorm 中的所有行作为反射类型切片

来源:stackoverflow

时间:2024-04-02 23:09:24 219浏览 收藏

IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《我怎样才能将 gorm 中的所有行作为反射类型切片》,聊聊,我们一起来看看吧!

问题内容

我想编写一个函数,使用反射类型返回表中的所有行。

func (rt *tableRouter) select_table_DB(ctx context.Context, vars url.Values, tableType reflect.Type, name string) (reflect.Value, error) {
    db, err := db.Open(rt.dbcfg)
    if err != nil {
        return reflect.Value{}, err
    }
    defer db.Close()

    rows := reflect.MakeSlice(reflect.SliceOf(tableType), 0, 0)
    db.WithContext(ctx).Table(name).Find(&rows)

    return rows, err
}

这只返回 {}


正确答案


您必须提供一个具体对象(包含一组导出字段)来从数据库接收数据,以便 gorm 知道数据库表列如何映射到对象成员。而 reflect.Value 不是这样的对象,也许您可​​以尝试使用 reflect.Value.Interface() 它返回一个接口,其底层数据是一个具体对象。顺便说一句,gorm/gen 是一个很好的工具,可以为您的模型自动生成 CURD 代码。 (enter link description here

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《我怎样才能将 gorm 中的所有行作为反射类型切片》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>