알 수없는 수준의 데이터베이스에서 카테고리 목록을 가져 오려고합니다. map[int][]interface{}
을 사용하는 것이 가능합니까?Go에 알 수없는 깊이 목록
type Category struct {
ID int
Name string
ParentID int
}
func GetCategories(db *gorm.DB) map[int][]interface{} {
var result = make(map[int][]interface{})
var categories = []Category{}
db.Where("parent_id = ?", 0).Find(&categories)
for len(categories) > 0 {
var ids []int
for _, cat := range categories {
ids = append(ids, cat.ID)
if cat.ParentID == 0 {
result[cat.ID] = append(result[cat.ID], cat)
} else {
// This work only for 2nd level ...
result[cat.ParentID] = append(result[cat.ParentID], cat)
}
}
}
return result
}
최상의 출력은 JSON 배열에 있습니다. 예를 들어 :
[
{id: 1, name: "Car", Parent: 0, Children: []},
{id: 2, name: "Boat", Parent: 0, Children: [
{id: 4, name: "Fast", Parent: 2, Children: []},
{id: 5, name: "Slow", Parent: 2, Children: [
{id: 6, name: "ExtraSlow", Parent: 5, Children: []},
]},
]},
{id: 3, name: "Rocket", Parent: 0, Children: []}
]
가능하지만 피해야합니다. 찾고자하는 타입은'map [int] interface {}'입니다. –
질문을 2/3 수준의 예제 출력으로 업데이트 할 수 있습니까? –