入れ子になった構造体をgoで初期化する方法は?

user2709885:

こんにちは私はGolangに非常に新しいです、私を助けてください。構造体の中に構造体を定義しました。しかし、メインの構造体を初期化しようとすると、エラーが発生します。

type DetailsFilter struct {
  Filter struct {
    Name    string        
    ID      int                           
  } 
}

var M map[string]interface{}
M = make(map[string]interface{})
M["Filter"] = map[string]interface{}{"Name": "XYZ", "ID": 5}
var detailsFilter = DetailsFilter{Filter: M["Filter"]}}

私が取得するエラーは次のとおりです:フィールド値の構造体タイプとして(タイプインターフェース{})を使用できません:タイプアサーションが必要です。

DetailsFilterを初期化する方法を提案してください。Golangネストされた構造体を初期化するで説明されている方法を試してみましたが、これでも機能しません。

icza:

残念ながら、構造体フィールドの型が匿名の構造体である場合、構築時に、匿名の構造体の型を「複製」することによってのみ初期化できます(再度指定します)。

type DetailsFilter struct {
    Filter struct {
        Name string
        ID   int
    }
}

df := DetailsFilter{Filter: struct {
    Name string
    ID   int
}{Name: "myname", ID: 123}}
fmt.Println(df)

出力:

{Filter:{Name:myname ID:123}}

より短い代替

そのため、代わりに、構築時に初期化しないことをお勧めします。次のように、ゼロ値の構造体が作成された後で実行します。

df = DetailsFilter{}
df.Filter.Name = "myname2"
df.Filter.ID = 321
fmt.Printf("%+v\n", df)

出力:

{Filter:{Name:myname2 ID:321}}

Go Playgroundでお試しください

無名の構造体型の命名

または、フィールド型として匿名の構造体をまったく使用せず、次のように型に名前を付けます。

type Filter struct {
    Name string
    ID   int
}

type DetailsFilter struct {
    Filter Filter
}

そして、次のように単純に初期化できます。

df := DetailsFilter{Filter: Filter{Name: "myname", ID: 123}}
fmt.Printf("%+v\n", df)

出力(Go Playgroundで試してください):

{Filter:{Name:myname ID:123}}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

入れ子になった構造体の配列をGOで初期化する方法は?

分類Dev

入れ子になった構造体を理解する

分類Dev

GOでマルチレベルのネストされた構造体を文字通り初期化する方法は?

分類Dev

ネストされた構造体を初期化する方法は?

分類Dev

golangでネストされた構造体を初期化する方法は?

分類Dev

入れ子構造の配列をgolangで初期化する方法は?

分類Dev

cythonで構造体をNULLに初期化する方法は?

分類Dev

Go構造体でメンバーを初期化する方法

分類Dev

入れ子になった構造体または親のみでsync.Mutexを使用する必要がありますか?

分類Dev

別の構造体で構造体の配列を初期化する方法は?

分類Dev

Go4の入れ子になった構造体へのneo4j結果の非整列化

分類Dev

Cで構造体を初期化するための推奨される方法

分類Dev

Juliaで深くネストされた構造体を初期化/構築する方法は?

分類Dev

GoでネストされたJSONを構造体に解析する方法は?

分類Dev

CでConst構造体を初期化する方法-QAC警告を回避するには

分類Dev

異なる値でインラインで初期化された構造体のstd :: arrayを宣言する方法

分類Dev

構造体ポインタと指定された初期化を使用してC構造体を初期化する方法

分類Dev

事前定義された値で構造体を初期化する

分類Dev

構造体をnullに初期化する方法は?

分類Dev

構造体をユニオンで初期化する方法は?

分類Dev

PLC-ST: 宣言で構造体を初期化する方法は?

分類Dev

Swift-構造体で配列を初期化する方法は?

分類Dev

動的に割り当てられた構造体のconstメンバーを初期化する適切な方法

分類Dev

char配列を含むC ++構造体は、異常な方法でゼロに初期化されます

分類Dev

指定されたアドレスに基づいて構造体を初期化する方法は?

分類Dev

golangで次の構造の構造体を初期化する方法

分類Dev

C構造体をGo構造体に変換するための適切または推奨される方法

分類Dev

golangでC構造体を初期化するときに、構造体初期化子の値が少なすぎます

分類Dev

Goで構造体を初期化するときにnewと{}を使用する

Related 関連記事

  1. 1

    入れ子になった構造体の配列をGOで初期化する方法は?

  2. 2

    入れ子になった構造体を理解する

  3. 3

    GOでマルチレベルのネストされた構造体を文字通り初期化する方法は?

  4. 4

    ネストされた構造体を初期化する方法は?

  5. 5

    golangでネストされた構造体を初期化する方法は?

  6. 6

    入れ子構造の配列をgolangで初期化する方法は?

  7. 7

    cythonで構造体をNULLに初期化する方法は?

  8. 8

    Go構造体でメンバーを初期化する方法

  9. 9

    入れ子になった構造体または親のみでsync.Mutexを使用する必要がありますか?

  10. 10

    別の構造体で構造体の配列を初期化する方法は?

  11. 11

    Go4の入れ子になった構造体へのneo4j結果の非整列化

  12. 12

    Cで構造体を初期化するための推奨される方法

  13. 13

    Juliaで深くネストされた構造体を初期化/構築する方法は?

  14. 14

    GoでネストされたJSONを構造体に解析する方法は?

  15. 15

    CでConst構造体を初期化する方法-QAC警告を回避するには

  16. 16

    異なる値でインラインで初期化された構造体のstd :: arrayを宣言する方法

  17. 17

    構造体ポインタと指定された初期化を使用してC構造体を初期化する方法

  18. 18

    事前定義された値で構造体を初期化する

  19. 19

    構造体をnullに初期化する方法は?

  20. 20

    構造体をユニオンで初期化する方法は?

  21. 21

    PLC-ST: 宣言で構造体を初期化する方法は?

  22. 22

    Swift-構造体で配列を初期化する方法は?

  23. 23

    動的に割り当てられた構造体のconstメンバーを初期化する適切な方法

  24. 24

    char配列を含むC ++構造体は、異常な方法でゼロに初期化されます

  25. 25

    指定されたアドレスに基づいて構造体を初期化する方法は?

  26. 26

    golangで次の構造の構造体を初期化する方法

  27. 27

    C構造体をGo構造体に変換するための適切または推奨される方法

  28. 28

    golangでC構造体を初期化するときに、構造体初期化子の値が少なすぎます

  29. 29

    Goで構造体を初期化するときにnewと{}を使用する

ホットタグ

アーカイブ