go 定义一个类型格式是 menuList:=[{"url":"/menu1","name":"菜单1","children":{...}},{"ur"l:"/menu2","name":"菜单2"},{"url":"/menu3","name":"菜单3"}],children中不知道是几层
时间: 2023-07-31 13:04:21 浏览: 73
你好!对于这种情况,我们可以使用递归的方式来处理不确定层数的 menuList。递归是一种自我调用的算法,可以解决这种具有重复结构的问题。
首先,我们定义一个名为 MenuItem 的结构体,用于表示每个菜单项:
```
type MenuItem struct {
URL string `json:"url"`
Name string `json:"name"`
Children []MenuItem `json:"children,omitempty"`
}
```
接下来,我们可以使用递归函数来处理 menuList。这个函数将遍历每个菜单项,如果该菜单项有子菜单项(即 Children 不为空),则对子菜单项进行递归调用,直到没有子菜单项为止。
```go
func processMenuList(menuList []MenuItem) {
for _, menuItem := range menuList {
fmt.Println("URL:", menuItem.URL)
fmt.Println("Name:", menuItem.Name)
if len(menuItem.Children) > 0 {
fmt.Println("Children:")
processMenuList(menuItem.Children)
}
}
}
```
最后,我们可以调用这个函数并传入 menuList 进行处理:
```go
func main() {
menuList := []MenuItem{
{
URL: "/menu1",
Name: "菜单1",
Children: []MenuItem{
{
URL: "/menu1-1",
Name: "菜单1-1",
},
{
URL: "/menu1-2",
Name: "菜单1-2",
Children: []MenuItem{
{
URL: "/menu1-2-1",
Name: "菜单1-2-1",
},
},
},
},
},
{
URL: "/menu2",
Name: "菜单2",
},
{
URL: "/menu3",
Name: "菜单3",
},
}
processMenuList(menuList)
}
```
这样,我们就可以遍历并处理具有不确定层数的 menuList 了。希望能对你有所帮助!如果你还有其他问题,请随时提问。
阅读全文