nikkiing 1 year ago
parent 0afec32205
commit 26834e8d2b
  1. 27
      pkg/tree.go

@ -0,0 +1,27 @@
package pkg
type Node[T any] struct {
Data T
Children []Node[T]
}
// 适用 A00001B00001 层级结构
// parent 父级字符串
// length A00001 一个节点长度
// pathFunc 返回T的code A00001
func Tree[T any](data []T, parent string, length int, pathFunc func(d T) string) (res []Node[T]) {
for _, v := range data {
path := pathFunc(v)
if len(path) < length {
return nil
}
p := path[:len(path)-length]
if p == parent {
res = append(res, Node[T]{
Data: v,
Children: Tree[T](data, path, length, pathFunc),
})
}
}
return
}
Loading…
Cancel
Save