想把数据库查询的结果放入一个变量,但是不知道怎么放了

时光
  • 109

各位大神晚上好,我在实现数据库查询后想把结果放到一个变量但是不知道怎么做了,以下为mode的代码

package models

type menu_cate struct {
    Model
    CateNumber string `json:'cate_number'`
    Name        string `json:'name'`
    ParentId        int    `json:'parent_id'`
}


func GetMenuCate() (SystemMenu []menu_cate) {
    db.Find(&SystemMenu)
    return
}

以下为需要处理的地方:

type SystemMenu struct {
    Id       int    `json:"id"`        //id
    ParentId int    `json:"parent_id"` //上级菜单id
    Name     string `json:"name"`      //菜单名
    CateNumber    string `json:"cate_number"`
}

    allMenu := []SystemMenu{}
    menuData := models.GetMenuCate();

我想把menudata放入allmen,请教下改怎么做呢?谢谢

回复
阅读 1.2k
3 个回答

方法1,直接对allMenu 赋值,for range
方法2,对结构体进行强转

感觉for range是比较简单直接的了

题目看错了,之前的答案还留在下面吧。

你这里的情况,应该是返回给前端的类型,和数据库的类型不同,那就直接 for range 赋值吧。


之前的回答:

修改下 GetMenuCate 方法,直接传 allMenu 地址进去。记得要把 error 返回,用于错误判断。

func GetMenuCate(m *[]menu_cate) error {
        return db.Find(m).Error()
}

类似于 Find(),其实也是传的地址,只不过 Find 的类型不确定,所以这里用的 interface{} 表示任意类型。

使用非常简单,如下:

allMenu := []SystemMenu{}
if err := models.GetMenuCate(&allMenu); err != nil {
    // 错误处理逻辑
}

// 做其他事情
宣传栏