日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

golang通过递归遍历生成树状结构

發布時間:2023/12/29 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 golang通过递归遍历生成树状结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

業務場景:

? ? ? ?一個機構查詢科室信息的時候,希望返回樹狀結構的嵌套格式;

解決辦法:

? ? ?通過遞歸和指針,嵌套成對應的結構體;

? ? ? 借鑒了前人的代碼,但是最后遞歸的指針調用自己也是調試了半天才出來,這里獻上完整的示例代碼.? ? ? ?

?

package mainimport ("fmt""encoding/json" )type dept struct {DeptId string `json:"deptId"`FrameDeptStr string `json:"frameDeptStr"`Child []*dept `json:"child"` } func main() {depts := make([]dept,0)var a depta.DeptId = "1"a.FrameDeptStr = ""depts = append(depts,a)a.DeptId="3"a.FrameDeptStr = "1"depts = append(depts,a)a.DeptId="4"a.FrameDeptStr = "1"depts = append(depts,a)a.DeptId="5"a.FrameDeptStr = "13"depts = append(depts,a)a.DeptId="6"a.FrameDeptStr = "13"depts = append(depts,a)fmt.Println(depts)deptRoots := make([]dept,0)for _,v := range depts{if v.FrameDeptStr == ""{deptRoots= append(deptRoots,v)}}pdepts := make([]*dept,0)for i,_ := range depts{var a *depta = &depts[i]pdepts = append(pdepts,a)}//獲取了根上的科室fmt.Println("根上的科室有:",deptRoots)var node *deptnode = &depts[0]makeTree(pdepts,node)fmt.Println("the result we got is",pdepts)data, _ := json.Marshal(node)fmt.Printf("%s", data)}func has(v1 dept,vs []*dept) bool {var has boolhas = falsefor _,v2 := range vs {v3 := *v2if v1.FrameDeptStr+v1.DeptId == v3.FrameDeptStr{has = truebreak}}return has}func makeTree(vs []*dept,node *dept) {fmt.Println("the node value in maketree is:",*node)childs := findChild(node,vs)fmt.Println(" the child we got is :",childs)for _,child := range childs{fmt.Println("in the childs's for loop, the child's address here is:",&child)node.Child = append(node.Child,child)fmt.Println("in the child's for loop, after append the child is:",child)if has(*child,vs) {fmt.Println("i am in if has")fmt.Println("the child in if has is:",*child)fmt.Println("the child in if has 's address is:",child)makeTree(vs,child)}}}func findChild(v *dept,vs []*dept)(ret []*dept) {for _,v2 := range vs{if v.FrameDeptStr+v.DeptId == v2.FrameDeptStr{ret= append(ret,v2)}}return }

代碼備注: 通過frame_dept_str來確定科室之間的關系的, (a.frame_dept_str= a's parent's frame_dept_str + a's parent's dept_id).

總結

以上是生活随笔為你收集整理的golang通过递归遍历生成树状结构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 午夜影院一区二区 | 激情在线网站 | 中文成人无字幕乱码精品区 | 成人黄色在线看 | 浮力影院国产第一页 | 久久久久久日产精品 | 欧美成人三级伦在线观看 | 饥渴丰满的少妇喷潮 | 国产日产欧美一区二区 | 亚洲欧美另类在线 | 国产精品久久久久久亚洲av | av福利网址| 色综合亚洲 | 97在线视频免费 | 黑人乱码一区二区三区av | 黑丝美女一区二区 | 无码日韩精品一区二区 | 亲子伦视频一区二区三区 | 污网站免费在线观看 | 亚洲一区欧洲二区 | 美女扒开屁股让男人捅 | 奶波霸巨乳一二三区乳 | 亚洲一区二区三区四区在线观看 | 国产原创精品 | 亚洲 小说区 图片区 都市 | 人人澡人人爱 | 想要视频在线观看 | 国产白浆在线 | 国产精品99无码一区二区视频 | 操穴网站 | 年下总裁被打光屁股sp | 日产电影一区二区三区 | 老司机深夜免费福利 | www.avcao| 亚洲综合视频在线观看 | 精品国模一区二区三区欧美 | 超碰免费公开 | 性欧美丰满熟妇xxxx性 | 欧美日本高清视频 | 欧美日韩一区二区综合 | 强公把我次次高潮hd | 国产欧美日韩另类 | 最近国语视频在线观看免费播放 | 熟妇人妻无码xxx视频 | 亚洲成人不卡 | 蜜臀aⅴ国产精品久久久国产老师 | 国产成人精品久久二区二区 | 欧美一级免费观看 | 天天色综合av| 火影忍者羞羞漫画 | 久久综合精品国产二区无码不卡 | 日本精品在线视频 | 午夜福利视频一区二区 | 亚洲精品国产电影 | 在哪看毛片 | 欧美色激情 | 亚洲区小说区图片区 | 综合网在线观看 | www色综合 | 亚洲另类xxxx | 国产黑丝一区二区 | 欧美性做爰毛片 | 中文字幕精 | 国产激情无码一区二区三区 | 中文字幕日韩精品在线观看 | 国产第三页 | 97在线播放免费观看 | 欧美国产高清 | 欧美区国产区 | 男生插女生网站 | 网站免费视频www | 久久韩日| 日本黄色电影网址 | 操操久久 | 啪啪自拍 | 国模丫头1000人体 | 免费无遮挡在线观看视频网站 | 你懂的成人 | 大尺度摸揉捏胸床戏视频 | 亚洲天堂av在线免费观看 | 日韩 中文字幕 | 亚洲天堂一区在线观看 | 久久精品国产网红主播 | 黄色网在线免费观看 | 秋霞在线视频观看 | 一区二区三区免费 | 91精品美女 | 成人做受视频试看60秒 | 亚洲精品高清无码视频 | 欧美在线不卡视频 | 色先锋av| 成人av视屏| 91爱看 | 思思久久精品 | 一级国产精品 | 国产视频一区在线播放 | 男女激情免费网站 | 亚洲AV成人无码一二三区在线 | 欧美999|