У меня есть структура следующего формата
type Node struct {
Id string
Children []*Node
}
Input
У меня есть следующий ввод
var nestedSlice = [][]string{
{"60566", "605", "6056"},
{"60566", "605", "6061"},
{"60566", "605", "6065"},
{"60653", "606", "6109"},
{"60566", "603", "6065"},
}
код
package main
import (
//"fmt"
"github.com/davecgh/go-spew/spew"
)
type Node struct {
Id string
Type string
Children []*Node
}
func createNode(values []string, node *Node) *Node {
}
func insert(values []string, nodes []*Node) []*Node {
if len(nodes) == 0 {
rootNode := createNode(values, &Node{})
nodes = append(nodes, rootNode)
return nodes
} else {
for _, node := range nodes {
if node.Id == values[0] {
return insert(values[1:], node.Children)
}
}
anotherRoot := &Node{
Id: values[0],
}
nodes = append(nodes, anotherRoot)
}
return nodes
}
func main() {
nodes := make([]*Node, 0, 6)
var nestedSlice = [][]string{
{"60566", "605", "6056"},
{"60566", "605", "6061"},
{"60566", "605", "6065"},
{"60653", "606", "6109"},
{"60566", "603", "6065"},
}
for _, value := range nestedSlice {
nodes = insert(value, nodes)
}
spew.Dump(nodes)
}
У меня проблемы с функцией createNode. Я не уверен, как я могу взять фрагмент и создать его, используя рекурсию
Я хочу иметь в конце следующую структуру
[{
Id: 60566,
Children: [{
Id: 605,
Children: [{
Id: 6056
}, {
Id: 6061
}, {
Id: 6065
}]
}, {
Id: 603,
Children: [{
Id: 6065
}]
}]
}, {
Id: 60653
Children: [{
Id: 606,
Children: [{
Id: 6109
}]
}]
}]