zoukankan      html  css  js  c++  java
  • 递归调用

    func AndLevel(resource []Resource, parentid int64, level int) []Trees {
        //递归调用当所有的循环没有完成的时候是没有进行child的存值操作
        var len = 0
        var x = 0
        //这里是为了计算我存储数据的slice的长度
        for _, v := range resource {
            if v.ParentId == parentid {
                len = len + 1
            }
        }
        //这里根据上面取得的长度定义slice
        var tree []Trees = make([]Trees, len)
        if len != 0 {
            for k, v := range resource {
                //这里的k是不定的,所以需要定义另外的累加值进行累加计数
                //将计数累加放在这里会导致数组越界,因为没有满足条件,循环次数会超过上面定义的slice的长度
                if v.ParentId == parentid {
                    k = x
                    x = x + 1
                    //满足条件赋值
                    tree[k].Reskey = v.Reskey
                    tree[k].IsFunction = v.IsFunction
                    tree[k].Icon = v.Icon
                    tree[k].Sort = v.Sort
                    tree[k].Level = level
                    //下级菜单的个数不定所以这里更改id值和层级 循环再次调用自己
                    child := AndLevel(resource, v.ID, level+1)
                    //将取出来的值赋值给子项
                    tree[k].Children = child
                }
            }
        }
        return tree
    }
    

      

  • 相关阅读:
    Oracle 查看表空间的使用情况SQL语句
    汇总查询
    conky配置2
    数据库更新
    weka简介和回归转自chinakdd
    子查询
    ubuntu常用命令
    查询
    数据库中的连接
    测试用的数据库表及其数据
  • 原文地址:https://www.cnblogs.com/zhangym/p/7650584.html
Copyright © 2011-2022 走看看