1 回答

TA貢獻1783條經驗 獲得超4個贊
首先,除非你真的必須這樣做,否則你不應該使用指向切片的指針。為變量分配返回值更為典型,例如mySlice = sliceReturningFunction()
.
我不確定這里的所有要求是什么,但一種解決方案可能是:
構建父子關系圖(
map[int][]int
)。將根級關系傳遞給遞歸構建類別的函數。
這是一個示例遞歸函數。請注意,它返回一個新切片而不是改變一個指針。
func buildCategories(ids []int, relations map[int][]int) []Category {
categories := make([]Category, len(ids))
for i, id := range ids {
c := Category{ID: id}
if childIDs, ok := relations[id]; ok {
c.Child = buildCategories(childIDs, relations)
}
categories[i] = c
}
return categories
}
我在 Playground 上添加了一個完整的示例。它沒有經過測試,我相信有更好的解決方案,但它很簡單,至少可以給你一些想法。如果您將擁有數千個節點并且經常訪問這些節點,那么您將需要在 Go 代碼之外進行優化。
- 1 回答
- 0 關注
- 192 瀏覽
添加回答
舉報