登录
首页 >  Golang >  Go问答

使用递归在 GO 中搜索 ID 列表

来源:stackoverflow

时间:2024-02-24 08:39:22 199浏览 收藏

Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《使用递归在 GO 中搜索 ID 列表》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!


问题内容

type MenuItem struct {
        Id              int32       
        Type            string           
        SortOrder       int8        
        CategoryId      int32   
        Children        []*MenuItem 
    }

如果您有此结构,并且您有 []menuitem 的切片。我想仅检索包含 categoryid 值的切片。由于 children,这看起来像是一个递归用例,但基于切片的附加函数的工作方式,它看起来有点棘手。有任何想法吗?你会怎么做?

最终结果应该是 []int32 的切片:[11, 1900, 12, 1300,...., 2090]


正确答案


append 为您完成艰苦的工作,处理内存扩展,并在每个递归步骤中返回其结果:

func traverse(m *MenuItem) (r []int32) {

    if m == nil {
        return
    }

    r = append(r, m.CategoryId)

    for _, c := range m.Children {
        r = append(r, traverse(c)...)
    }

    return
}

https://go.dev/play/p/8d0cyPMV0r6

今天关于《使用递归在 GO 中搜索 ID 列表》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

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