美文网首页
Goland - 无限极分类

Goland - 无限极分类

作者: 简单方式 | 来源:发表于2022-11-22 15:43 被阅读0次
Goland
package main

import (
    "encoding/json"
    "fmt"
)

type Good struct {
    Id     int    `json:"id"`
    Name   string `json:"name"`
    Parent int    `json:"parent"`
    Child  []Good `json:"child"`
}

func main() {
    iphone_v1 := Good{
        Id:     2,
        Name:   "iphone 14 pro",
        Parent: 1,
    }
    iphone_v2 := Good{
        Id:     3,
        Name:   "iphone 14 pro max",
        Parent: 1,
    }
    iphone_v3 := Good{
        Id:     4,
        Name:   "iphone 14 pro max 256",
        Parent: 3,
    }
    iphone_v4 := Good{
        Id:     5,
        Name:   "iphone 14 pro max 128",
        Parent: 3,
    }
    iphone_v5 := Good{
        Id:     6,
        Name:   "iphone 14 pro max 128 black",
        Parent: 5,
    }
    iphone := Good{
        Id:     1,
        Name:   "iphone 14",
        Parent: 0,
    }
    GoodList := []Good{iphone, iphone_v1, iphone_v2, iphone_v3, iphone_v4, iphone_v5}
    result := Exec(0, GoodList)
    //echo json
    data, _ := json.Marshal(result)
    fmt.Println(string(data))
}

func Exec(goodsType int, goods []Good) []Good {
    child := make([]Good, 0)
    for _, item := range goods {
        if goodsType == item.Parent {
            node := Exec(item.Id, goods)
            item.Child = append(item.Child, node...)
            child = append(child, item)
        }
    }
    return child
}

输出结果

[
  {
    "id": 1,
    "name": "iphone 14",
    "type": 0,
    "child": [
      {
        "id": 2,
        "name": "iphone 14 pro",
        "type": 1,
        "child": null
      },
      {
        "id": 3,
        "name": "iphone 14 pro max",
        "type": 1,
        "child": [
          {
            "id": 4,
            "name": "iphone 14 pro max 256",
            "type": 3,
            "child": null
          },
          {
            "id": 5,
            "name": "iphone 14 pro max 128",
            "type": 3,
            "child": [
              {
                "id": 6,
                "name": "iphone 14 pro max 128 black",
                "type": 5,
                "child": null
              }
            ]
          }
        ]
      }
    ]
  }
]

相关文章

  • Goland - 无限极分类

    输出结果

  • php实现无限极分类

    一、两种实现php无限极分类 设置原始数据 1. 使用php递归实现php无限极分类 通过foreach循环实现无...

  • PHP 无限极分类

    概述   在实际工作中,经常要用到无限极分类。如导航表等等。到网上一搜php无限极分类,很多,但好多都是一个,并且...

  • 无限极分类原理与实现

    前言 无限极分类是我很久前学到知识,今天在做一个项目时,发现对其概念有点模糊,所以今天就来说说无限极分类。 首先来...

  • 无限极分类

    result

  • laravel无限级分类

    用laravel 做无限极分类;找了很多资料;假大空;有很多都是残缺的;而且达不到预期;无法做到无限极;今天分享下...

  • 树状无限极分类

    树状无限极分类 提供2种方式 function getTree($list,$id=0,$level=0) { s...

  • PHP无限极分类

    要了解这两种方式具体内容,可以去查看这篇博客: 左右值无限分类实现算法 本文主要提供两种将符合无限极分类格式的二维...

  • php无限极分类

    递归--无限极分类 递归--子孙树转二维数组 可以配合Nestable使用 递归--获取树所有叶子节点 结果1 结...

  • PHP 无限极分类

    1.循环迭代实现无限极分类 输出结果如下: 分析:这个算法利用了循环迭代,将线性结构按照父子关系以树形结构输出,算...

网友评论

      本文标题:Goland - 无限极分类

      本文链接:https://www.haomeiwen.com/subject/aqlnxdtx.html