如何在Golang中为嵌套数组结构初始化变量?

时间:2019-01-15 13:26:42

标签: go struct nested

我正在Golang中解析JSON文件,方法是制作一个嵌套结构,并能够成功完成。但是,现在我希望使用相同结构的变量,但是出现以下错误cannot use []Specs literal (type []Specs) as type []Specs in field value。有人可以在这里指出我的错误吗?我在做什么错了?

这是嵌套结构:

type Config struct {
OrdererOrgs []OrdererOrgs `json:"OrdererOrgs"`
PeerOrgs []PeerOrgs `json:"PeerOrgs"`
}

type OrdererOrgs struct {
Name string `json:"name"`
Domain string `json:"Domain"`
Specs []Specs `json:"Specs"`
}

type Specs struct {
Hostname string `json:"Hostname"`
Commonname string `json:"Commonname"`
}

type PeerOrgs struct {
Name   string `json:"name"`
Domain   string `json:"Domain"`
Template Template `json:"Template"`
Users Users `json:"Users"`
}

type Template struct {
Count int `json:"Count"`
Start int `json:"Start"`
}

type Users struct {
Count int `json:"Count"`
}

这是我的变量:

newconfig:= Config{
    OrdererOrgs: []OrdererOrgs{
        OrdererOrgs{
            Name: "Orderer1",
            Domain : "Domain",
            Specs: []Specs{
                Specs{
                Hostname: "H",
                Commonname: "C",
                },
                Specs{
                    Hostname: "H",
                    Commonname: "C",
                    },
            },
        },
        OrdererOrgs{
            Name: "Orderer2",
            Domain : "Domain2",
            Specs: []Specs{
                Specs{
                Hostname: "H",
                Commonname: "C",
                },
            },
        },
    },
    PeerOrgs: []PeerOrgs{
        PeerOrgs{
            Name: "Org1",
            Domain: "D",
            Template: Template{
                Count: 1,
                Start: 0,
            },
            Users: Users{
                Count: 1,
            },
        },
        PeerOrgs{
            Name: "Org2",
            Domain: "D2",
            Template: Template{
                Count: 1,
                Start: 0,
            },
            Users: Users{
                Count: 1,
            },
        },
    },
}

1 个答案:

答案 0 :(得分:0)

欢迎使用StackOverflow!正如沃尔克在评论中所说,您的代码似乎正在运行。您确定您现在看到问题了吗?您可以运行Volker提供的游乐场链接吗?

通常,这可以通过composite literals feature在Go中进行;该链接提供了几个有用的示例,并讨论了一些您可能会感兴趣的语义。如果某些方法无法正常工作,建议您逐步构建更复杂的结构,直到您了解问题出在哪里,直到达到应用程序所需的嵌套级别为止。