英文:
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
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论