parent
0afec32205
commit
26834e8d2b
@ -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…
Reference in new issue