배열과 손실 값 재귀 구조체는 하위 요소라는 도우미 FUNC 및 문자열 방법을 만든 인쇄 모든 어린이를 반복 :이동 - 나는 부모와 자식이있는 요소 구조체를 생성
package main
import "fmt"
type Element struct {
parent *Element
children []Element
tag string
}
func SubElement(parent *Element, tag string) Element {
el := Element{}
el.parent = parent
el.tag = tag
parent.children = append(parent.children, el)
return el
}
func (el Element) String() string {
s := "<" + el.tag + ">"
for _, child := range el.children {
s += child.String()
}
s += "</" + el.tag + ">"
return s
}
func main() {
root := Element{}
root.tag = "root"
a := SubElement(&root, "a")
b := SubElement(&a, "b")
SubElement(&b, "c")
fmt.Println(root) // prints: <root><a></a></root>
fmt.Println(a) // prints: <a><b></b></a>
// and so on
}
내가 겪고있는 문제는 내가 선택한 루트 노드에서 아이들의 첫 번째 계층 만 사용할 수 있다는 것입니다. parent.children에 append를 사용하는 것과 관련이있을 것이라고 확신하지만 올바르게 해결하는 방법에 대한 이해가 부족합니다.
이 문제를 해결하기 위해 children
을 map[int]Element
으로 변경했습니다. 그런 다음 내 하위 요소 func에 parent.children[len(parent.children)] = el
으로 "추가"합니다. 그런 다음 올바른 순서로 반복하기 위해 for 루프의 String 메소드는 for i:= 0; i < len(el.children); i++
이고 el.children[i]
에 액세스합니다.
여전히 배열을 사용하여 올바르게 수행하는 방법을 알고 싶습니다. 감사합니다
다른 레벨의 트리를 빌드 할 때 코드를 게시 할 수 있습니까? – Blacksad
완전한 예제와 출력을 가진 샘플을 업데이트했으며, 실제로 출력 결과는 – dskinner