golang children[] 递归查询
时间: 2023-12-13 10:32:32 浏览: 128
采用递归查询文件
以下是使用Golang递归查询children[]的示例代码:
```go
package main
import (
"encoding/json"
"fmt"
)
type Node struct {
Name string `json:"name"`
Children []*Node `json:"children"`
}
func (n *Node) FindChildren() []map[string]string {
var result []map[string]string
for _, child := range n.Children {
result = append(result, map[string]string{
"name": child.Name,
"parent_name": n.Name,
})
result = append(result, child.FindChildren()...)
}
return result
}
func main() {
input := `[{"name":"111",children":[{"name":"111-2","children":[{"name":"111-2-3"}]}]}]`
var nodes []*Node
if err := json.Unmarshal([]byte(input), &nodes); err != nil {
panic(err)
}
output := []map[string]string{}
for _, node := range nodes {
output = append(output, map[string]string{
"name": node.Name,
"parent_name": "",
})
output = append(output, node.FindChildren()...)
}
fmt.Println(output)
}
```
输入的JSON字符串被解析为一个Node类型的切片,然后对每个节点调用FindChildren()方法,该方法递归地查找所有子节点并将它们添加到结果中。最后,输出结果作为一个map[string]string类型的切片。
阅读全文