dongxie3681
2016-12-13 06:42
浏览 78
已采纳

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

I have the following data structure. I need to initialize it without using nested initialization. This data structure will be flushed to output a json file later.

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"`
}

Problem is when I try to append the variable of type struct2 to the Attack_resources[] slice, it gives the error as

cannot use struct2 (type *structs.Struct2) as type structs.Struct2 in append

How can we initialize the struct without using new or any ptr? As, if we use any of the standard struct initialization technique, it will give the above error. If I change the above data structure and make it hold a pointer to another struct, it doesn't store the values correctly. I am very new to golang. Any help is appreciated. Thanks in advance!

图片转代码服务由CSDN问答提供 功能建议

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

  type GeneratePlan struct {
模式字符串`json:“ mode”`
名称字符串`json:“  name“`
模式字符串`json:” schema“`
版本字符串`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类型的变量附加到Attack_resources时 [] slice,它给出错误,因为

 不能将struct2(类型* structs.Struct2)用作附加类型structs.Struct2 
    
 
 

如何在不使用new或任何ptr的情况下初始化结构? 因为,如果我们使用任何标准的结构初始化技术,都会产生上述错误。 如果我更改了上述数据结构并使其持有指向另一个结构的指针,则它将无法正确存储值。 我刚接触golang。 任何帮助表示赞赏。 预先感谢!

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

1条回答 默认 最新

相关推荐 更多相似问题