Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 如何在golang中初始化以下结构的结构_Json_Go_Struct - Fatal编程技术网

Json 如何在golang中初始化以下结构的结构

Json 如何在golang中初始化以下结构的结构,json,go,struct,Json,Go,Struct,我有以下数据结构。我需要在不使用嵌套初始化的情况下初始化它。稍后将刷新此数据结构以输出json文件 type GeneratePlan struct{ Mode string `json:"mode"` Name string `json:"name"` Schema string `json:"schema"` Version string `json:"version"` Attack_plans []struct1 `json:"att

我有以下数据结构。我需要在不使用嵌套初始化的情况下初始化它。稍后将刷新此数据结构以输出json文件

type GeneratePlan struct{
    Mode    string `json:"mode"`
    Name    string `json:"name"`
    Schema  string `json:"schema"`
    Version string `json:"version"`
    Attack_plans []struct1 `json:"attack-plans"`

} 

type struct1 struct {
    Attack_plan Attack_plan `json:"attack-plan"`
}


type Attack_plan struct{
    Attack_resouces []struct2 `json:"attack-resources"`
}

type struct2 struct {
    Attack_resource Attack_resource `json:"attack-resource"`
}
问题是,当我尝试将struct2类型的变量附加到攻击资源[]片时,它给出的错误如下

cannot use struct2 (type *structs.Struct2) as type structs.Struct2 in append
我们如何在不使用新的或任何ptr的情况下初始化结构?因为,如果我们使用任何标准的struct初始化技术,它将给出上述错误。
如果我更改了上面的数据结构,并使其包含指向另一个结构的指针,则它无法正确存储值。我对戈朗很陌生。感谢您的帮助。提前谢谢

可以使用以下命令初始化结构值:

resource := struct2{}
正如@nothingmuch所指出的,如果您有一个结构指针并且需要底层值,则可以使用以下方法取消对指针的引用:

deref := *resource

请确保将来发布实际失败的代码。错误消息也与您的代码示例不匹配。您的问题是,您正在将指针值附加到结构片。将切片定义更改为
[]*Struct2
,或取消引用
x.Attack\u resources=append(x.Attack\u resources,*Struct2)
中的指针。请注意,go通常不鼓励使用snake_案例。