以下のデータ構造を持っています。ネストされた初期化を使用せずに初期化する必要があります。このデータ構造はフラッシュされ、後でjsonファイルを出力します。私はAttack_resources []スライスへの型struct2の変数を追加しようとすると、ゴランの次の構造体の構造体を初期化する方法
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"`
}
問題があり、それは我々が新規または任意のPTRを使用せずに、構造体を初期化するにはどうすればよい
cannot use struct2 (type *structs.Struct2) as type structs.Struct2 in append
としてエラーが発生します?として、私たちは、標準の構造体の初期化手法のいずれかを使用する場合、上記のエラーが発生します。 上記のデータ構造を変更して別の構造体へのポインタを保持させると、値が正しく格納されません。私はゴランにとって非常に新しいです。どんな助けもありがとうございます。前もって感謝します!
将来、実際に失敗したコードを投稿してください。エラーメッセージもコードサンプルと一致しません。 問題は、構造体のスライスにポインタ値を追加していることです。スライス定義を '[*] Struct2'に変更するか、' x.Attack_resources = append(x.Attack_resources、* struct2) 'のようにポインタを逆参照してください。 snake_caseは一般的にgoでは推奨されません。 – nothingmuch