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