Go语言生成树状数组(tree数组)数据

1.将带有父级数组转成树状数组

func GetTreeArray(num []gorose.Data, pid int64, itemprefix string) []gorose.Data {
	childs := ToolFar(num, pid) //获取pid下的所有数据
	var chridnum []gorose.Data
	if childs != nil {
		var number int = 1
		var total int = len(childs)
		for _, v := range childs {
			j := ""
			k := ""
			if number == total {
				j += "└"
				k = ""
				if itemprefix != "" {
					k = " "
				}

			} else {
				j += "├"
				k = ""
				if itemprefix != "" {
					k = "│"
				}
			}
			spacer := ""
			if itemprefix != "" {
				spacer = itemprefix + j
			}
			v["spacer"] = spacer
			v["children"] = GetTreeArray(num, v["id"].(int64), itemprefix+k+" ")
			chridnum = append(chridnum, v)
			number++
		}
	}
	return chridnum
}

返回结果如下:

39dae00f10434a83b52390421803aa93.png

 2.将getTreeArray的结果返回为二维数组

func GetTreeList_txt(data []gorose.Data, field string) []gorose.Data {
	var midleArr []gorose.Data
	for _, v := range data {
		var children []gorose.Data
		if _, ok := v["children"]; ok {
			children = v["children"].([]gorose.Data)
		} else {
			children = make([]gorose.Data, 0)
		}
		delete(v, "children")
		v[field+"_txt"] = v["spacer"].(string) + " " + v[field+""].(string)
		if len(children) > 0 {
			v["haschild"] = 1
		} else {
			v["haschild"] = 0
		}
		if _, ok := v["id"]; ok {
			midleArr = append(midleArr, v)
		}
		if len(children) > 0 {
			newarr := GetTreeList_txt(children, field)
			midleArr = ArrayMerge_x(midleArr, newarr)
		}
	}
	return midleArr
}

3.调用的数组拼接函数

func ArrayMerge_x(ss ...[]gorose.Data) []gorose.Data {
	n := 0
	for _, v := range ss {
		n += len(v)
	}
	s := make([]gorose.Data, 0, n)
	for _, v := range ss {
		s = append(s, v...)
	}
	return s
}

     获取更多Go开发资源请自行去 GoFly全栈开发社区获取

GoFly全栈开发社区-Go全栈开发社区GoFly全栈开发社区是Go语言开发者的技术交流社区,社区提供Go语言快速开发框架,Go全栈开发,使用GoFly框架就可开发出完整项目,一个也能快速的开发项目,我们框架提供开发需要基础模块,开发者直接编写项目的业务代码,新手也可以快速上手,框架已经做好最优配置新手也可以同样快速开发出企业级项目。https://goflys.cn/home

go快速开发框架gin+vue快速开发后台管理(前后端分离),极快接口api生成器,快到不写一行代码,10秒就接口就可以调用_GoFly开发者的博客-CSDN博客​用 Go 语言基于Gin、Vue、Typescript、vite、Arco Design、MySQL等框架精心打造的一款模块化、插件化、高度自动化、高性能的前后端分离架构敏捷开发框架,可快速搭建前后端分离后台管理系统。本着简化开发、提升开发效率的初衷,框架自研了一套个性化的组件,实现了可插拔的组件式开发方式,同时为了敏捷快速开发,框架特地集成了代码生成器一键生成管理后台的前后端代码,快速开发或生成api接口代码和接口文档、测试api接口等编辑,完全自主研发了自定义GO后端服务模板和前端Vue自定义模板_gin+vuehttps://blog.csdn.net/qq_23731311/article/details/131022098

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值