- niuhe - IDL 生成代码,前端协议, 页面和文档插件
- Vite5+Electron聊天室|electron31跨平台仿微信EXE客户端|vue3聊天程序
- Tauri2.0-Vue3OS桌面端os平台|tauri2+vite6+arco电脑版OS管理系统
- flutter3-dymall仿抖音直播商城|Flutter3.27短视频+直播+聊天App实例
- 结构体的切片(slice of struct)不等于它实现的接口的切片(slice of interface)?
- 如何在 Go 中使用管道连接多个命令?
- 如何在 Go 程序中打包静态资源?
- 如何在 Go 中使用 C++?
- 在 Go 中取消阻塞操作
- Golang单元测试
- joanswei大约12小时之前在 golang 无限级树状结构 中评论package main import ( //"encoding/json" "encoding/json" "fmt" ) type Datanode struct { Id int `json:"id"` PId int `json:"pid"` Name string `json:"name"` Child []*Datanode `json:"child"` } var Jsondata []byte //存储json数据 func main() { Data := make([]Datanode, 0) //存储所有初始化struct var a Datanode a.Id = 0 a.PId = -1 a.Name = "目录" Data = append(Data, a) a.Id = 1 a.PId = 0 a.Name = "一、水果" Data = append(Data, a) a.Id = 2 a.PId = 1 a.Name = "1.苹果" Data = append(Data, a) a.Id = 3 a.PId = 1 a.Name = "2.香蕉" Data = append(Data, a) a.Id = 4 a.PId = 0 a.Name = "二、蔬菜" Data = append(Data, a) a.Id = 5 a.PId = 4 a.Name = "1.芹菜" Data = append(Data, a) a.Id = 6 a.PId = 4 a.Name = "2.黄瓜" Data = append(Data, a) a.Id = 7 a.PId = 6 a.Name = "(1)黄瓜特点" Data = append(Data, a) a.Id = 8 a.PId = 4 a.Name = "3.西红柿" Data = append(Data, a) a.Id = 9 a.PId = 0 a.Name = "三、关系" Data = append(Data, a) var data []*Datanode data = make([]*Datanode, 0) for i, _ := range Data { var a *Datanode a = &Data[i] data = append(data, a) } node := &Data[4] //父节点 maketree(data, node) //调用生成tree transformjson(node) //转化为json jsontotree(Jsondata) //json 转为struct } func maketree(Data []*Datanode, root *Datanode) { // 创建一个哈希表,用于快速查找子节点 childMap := make(map[int][]*Datanode) for _, node := range Data { childMap[node.PId] = append(childMap[node.PId], node) } // 递归构建树 buildTree(root, childMap) } func buildTree(node *Datanode, childMap map[int][]*Datanode) { // 查找当前节点的子节点 if children, exists := childMap[node.Id]; exists { node.Child = append(node.Child, children...) // 递归处理子节点 for _, child := range children { buildTree(child, childMap) } } } func transformjson(Data *Datanode) { //转为json Jsondata, _ = json.Marshal(Data) fmt.Println(string(Jsondata)) } func jsontotree(jsondata []byte) { //json转struct var a Datanode err := json.Unmarshal(jsondata, &a) fmt.Println("22222222222222", string(jsondata)) if err != nil { fmt.Println(err) } else { fmt.Println(a.Id, a.PId, a.Name) for _, v := range a.Child { fmt.Println(*v) } } } 你这个存在很严重的性能问题,如果有10级,数据量很大,你这个就循环不过来了,如果写在接口里就不满足开发环境了,其实有两种情况优化一个使用mysql8.0以后得无限父级查询,一个是代码优化
- LIGUANGYAO5天之前学习了,能下载[系统源码](http://doofuu.com/)吗,有go开发的[小程序案例](http://doofuu.com/article/4156206.html)吗,或者能[免费下载源码](https://free.doofuu.com)能也行
- LIGUANGYAO5天之前在 推荐你认为好的Go资源 中评论学习了,能下载[系统源码](http://doofuu.com/)吗,有go开发的[小程序案例](http://doofuu.com/article/4156206.html)吗,或者能[免费下载源码](https://free.doofuu.com)能也行
- LIGUANGYAO5天之前在 [UE5]虚幻引擎UEC++从基础到进阶 中评论学习了,能下载[系统源码](http://doofuu.com/)吗,有go开发的[小程序案例](http://doofuu.com/article/4156206.html)吗,或者能[免费下载源码](https://free.doofuu.com)能也行
- LIGUANGYAO5天之前在 GfastShop商城系统 中评论学习了,能下载[系统源码](http://doofuu.com/)吗,有go开发的[小程序案例](http://doofuu.com/article/4156206.html)吗,或者能[免费下载源码](https://free.doofuu.com)能也行
- LIGUANGYAO5天之前在 Cesium可视化系统实战教程 中评论学习了,能下载[系统源码](http://doofuu.com/)吗,有go开发的[小程序案例](http://doofuu.com/article/4156206.html)吗,或者能[免费下载源码](https://free.doofuu.com)能也行
- LIGUANGYAO5天之前在 React UI组件库教程 中评论学习了,能下载[系统源码](http://doofuu.com/)吗,有go开发的[小程序案例](http://doofuu.com/article/4156206.html)吗,或者能[免费下载源码](https://free.doofuu.com)能也行
- LIGUANGYAO5天之前学习了,能下载[系统源码](http://doofuu.com/)吗,有go开发的[小程序案例](http://doofuu.com/article/4156206.html)吗,或者能[免费下载源码](https://free.doofuu.com)能也行
- LIGUANGYAO5天之前学习了,能下载[系统源码](http://doofuu.com/)吗,有go开发的[小程序案例](http://doofuu.com/article/4156206.html)吗,或者能[免费下载源码](https://free.doofuu.com)能也行
- LIGUANGYAO5天之前学习了,能下载[系统源码](http://doofuu.com/)吗,有go开发的[小程序案例](http://doofuu.com/article/4156206.html)吗,或者能[免费下载源码](https://free.doofuu.com)能也行
最近的评论