我有以下代码来组织
我想要实现的功能是聚合父级及其父级等到层次结构的顶部,并返回所有父级ID的切片。由于我不知道层次结构的深度,因此我认为需要一些编程递归来获取每个父级的父级,这将执行以下操作:
有没有更符合习惯的方法实现这个?
*Widget
结构体成为一个层级结构。 Parent()
返回具有调用者父 ID 的小部件。层次结构最多可以深达 4 或 5 层。type Widget struct {
ID int64
ParentID int64
}
func (w *Widget) Parent() *Widget {
// Returns the widget with an ID of w.ParentID
}
我想要实现的功能是聚合父级及其父级等到层次结构的顶部,并返回所有父级ID的切片。由于我不知道层次结构的深度,因此我认为需要一些编程递归来获取每个父级的父级,这将执行以下操作:
func (w *Widget) AllParents() []*Widget {
var parentWidgets []*Widget
x := w.Parent()
parentWidgets = append(parentWidgets, x)
y := x.Parent()
parentWidgets = append(parentWidgets, y)
...
return parentWidgets
}
有没有更符合习惯的方法实现这个?