go语言实现无限极分类

作者: adm 分类: go 发布时间: 2022-03-05

本方法适合无限分类较多,查找的分类对应的子分类较少(如果无限分类超级多,最好采用分类树的方式,避免过度查询数据库),如果无限分类有限,建议用go语言实现无限极分类

// 应用分类二级菜单
AppCateNode struct {
Id int64 `json:"id"`
Name string `json:"name"`
Sub []*AppCateNode `json:"sub"`
}

func (appc *AppCate) AppCateArr(pid int64) []*AppCateNode {
apc := new([]*AppCate)
db.GetEngine().Where("parent_id=?", pid).Find(apc)
if apc == nil {
return nil
}

apc_node := []*AppCateNode{}
for _, v := range *apc {
chd := appc.AppCateArr(v.Id)
node := &AppCateNode{
Id: v.Id,
Name: v.Name,
}
node.Sub = chd
apc_node = append(apc_node, node)
}
return apc_node
}

调用方法:第一次传递参数0即可。

返回结果:

[
{
"id": 1,
"name": "游戏",
"sub": [
{
"id": 3,
"name": "射击游戏",
"sub": [
{
"id": 9,
"name": "aaa",
"sub": [

]
},
{
"id": 10,
"name": "ccc",
"sub": [

]
}
]
},
{
"id": 4,
"name": "卡牌游戏",
"sub": [

]
},
{
"id": 5,
"name": "跑酷游戏",
"sub": [

]
}
]
},
{
"id": 2,
"name": "购物",
"sub": [
{
"id": 6,
"name": "图书商城",
"sub": [

]
},
{
"id": 7,
"name": "生活用品",
"sub": [

]
},
{
"id": 8,
"name": "网上超市",
"sub": [

]
}
]
}
]

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!