英文:
How to build a structure tree from a slice of struct?
问题
以下是您提供的代码的翻译结果:
这是我的初始模型:
type Team struct {
Id string `json:"id"`
Name string `json:"name"`
Level int64 `json:"level"`
}
type TeamTree struct {
Teams []Team `json:"teams"`
Child []TeamTree `json:"child"`
}
示例数据:
id team level
a BOD 1
b Marketing 2
c Dev 2
d Worker 3
我希望得到以下结果(应该是一个映射):
{
"teams": [
{"id": "a", "team": "BOD", "level": 1}
],
"child": {
"teams": [
{"id":"b", "team": "marketing", "level": 2},
{"id":"c", "team": "marketing", "level": 2}
],
"child": {
"teams": [
{"id": "d", "team": "worker", "level": 3}
],
"child": {}
}
}
}
有人告诉我要做自循环,但我不知道如何做,因为我一直遇到错误,我的代码甚至无法运行。
英文:
here are my initial model
type Team struct {
Id string `json:"id"`
Name string `json:"name"`
Level int64 `json:"level"`
}
type TeamTree struct {
Teams []Team `json:"teams"`
Child []TeamTree `json:"child"`
}
Sample data:
id team level
a BOD 1
b Marketing 2
c Dev 2
d Worker 3
I want to have this result (should be a mapping):
{
"teams": [
{"id": "a", "team": "BOD", "level": 1}
],
"child": {
"teams": [
{"id":"b", "team": "marketing", "level": 2},
{"id":"c", "team": "marketing", "level": 2}
],
"child": {
"teams": [
{"id": "d", "team": "worker", "level": 3}
],
"child"": {}
}
}
}
I was told to do self loop, but I do not know how to do it, since I keep getting error and my code cant even run.
答案1
得分: 2
这是你想要的一个完整示例:
package main
import "log"
type Team struct {
id string
name string
level int64
}
type TeamTree struct {
teams []Team
children []TeamTree
}
func main() {
firstChild := TeamTree{teams: []Team{{id: "firstChildId", name: "First", level: 10}}, children: make([]TeamTree, 0)}
secondChild := TeamTree{teams: []Team{{id: "secondChildId", name: "Second", level: 20}}, children: make([]TeamTree, 0)}
thirdChild := TeamTree{teams: []Team{{id: "thirdChildId", name: "Third", level: 30}}, children: make([]TeamTree, 0)}
rootTeamTree := TeamTree{teams: []Team{{id: "rootId", name: "Root", level: 100}}, children: []TeamTree{firstChild, secondChild, thirdChild}}
log.Println("What's the second child's level:", rootTeamTree.children[1].teams[0].level)
}
这是结果:
2022/06/19 08:24:55 What's the second child's level: 20
英文:
This is a full example of what you want
package main
import "log"
type Team struct {
id string
name string
level int64
}
type TeamTree struct {
teams []Team
children []TeamTree
}
func main() {
firstChild := TeamTree{teams: []Team{{id: "firstChildId", name: "First", level: 10}}, children: make([]TeamTree, 0)}
secondChild := TeamTree{teams: []Team{{id: "secondChildId", name: "Second", level: 20}}, children: make([]TeamTree, 0)}
thirdChild := TeamTree{teams: []Team{{id: "thirdChildId", name: "Third", level: 30}}, children: make([]TeamTree, 0)}
rootTeamTree := TeamTree{teams: []Team{{id: "rootId", name: "Root", level: 100}}, children: []TeamTree{firstChild, secondChild, thirdChild}}
log.Println("What's the second child's level:", rootTeamTree.children[1].teams[0].level)
}
And this is the result
2022/06/19 08:24:55 What's the second child's level: 20
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论