教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 go语言菜单树结构

go语言菜单树结构

发布时间:2021-12-02   编辑:jiaochengji.com
教程集为您提供go语言菜单树结构等资源,欢迎您收藏本站,我们将为您提供最新的go语言菜单树结构资源

GO语言菜单树结构实现,Menu是数据库表映射。MenuTree是树结构菜单,目前只考虑2级菜单。后面附源码,亲测可用

<pre><code class="language-html hljs">package models import ( "github.com/astaxie/beego/orm" "time" ) type Menu struct { Base MenuName string Pid int64 MenuType int8 MenuUrl string } type MenuTree struct { Id int64 MenuName string Pid int64 MenuType int8 MenuUrl string Children []*MenuTree } func SaveMenu(m *Menu) (int64, error) { if m.CreateUser == "" { m.CreateUser = "sys" } if m.UpdateUser == "" { m.UpdateUser = "sys" } m.CreateTime = time.Now() m.UpdateTime = time.Now() return orm.NewOrm().Insert(m) } func GetMenuList() (dataList []interface{}, err error) { var list []Menu if _, err := orm.NewOrm().QueryTable(new(Menu)).All(&list); err == nil { for _, v := range list { dataList = append(dataList, v) } return dataList, nil } return nil, err } func GetMenuTree() (dataList []interface{}, err error) { var parentList []*Menu //获取父节点 if _, err := orm.NewOrm().QueryTable(new(Menu)).Filter("pid", nil).All(&parentList); err != nil { return nil, err } for _, v := range parentList { parent := MenuTree{v.Id, v.MenuName, v.Pid, v.MenuType, v.MenuUrl, []*MenuTree{}} var childrenList []*Menu if _, err := orm.NewOrm().QueryTable(new(Menu)).Filter("pid", v.Id).All(&childrenList); err != nil { return nil, err } for _, c := range childrenList { child := MenuTree{c.Id, c.MenuName, c.Pid, c.MenuType, c.MenuUrl, []*MenuTree{}} parent.Children = append(parent.Children, &child) } dataList = append(dataList, parent) } return dataList, nil } </code></pre>

 

到此这篇关于“go语言菜单树结构”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
go语言菜单树结构
数据结构-树和二叉树(Golang)
Go 语言十年而立,Go2 蓄势待发
想系统学习GO语言(Golang
[GO语言基础] 一.为什么我要学习Golang以及GO语言入门普及
2018年最全Go语言教程零基础入门到进阶实战视频
Golang编译器源码分析(1)
Go 语言到底适合干什么?
go语言之结构体和方法
asp.net c实现省市区树形菜单代码

[关闭]
~ ~