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 を初期化しようとしています。ネストされた匿名構造体フィルターを含む構造体。ただし、マップから Filter フィールドを初期化しようとすると、エラーが発生します。
can not use (type interface {}) as type struct in field value : need type assertion
推奨される解決策は、構築中にネストされた匿名構造体を初期化しないことです。代わりに、ゼロ値の構造体を初期化し、ネストされたフィールドに値を割り当てます:
df := DetailsFilter{} df.Filter.Name = "myname" df.Filter.ID = 123
もう 1 つの代替方法は、匿名の構造体型に名前を付けて明示的に初期化することです:
type Filter struct { Name string ID int } type DetailsFilter struct { Filter Filter } df := DetailsFilter{Filter: Filter{Name: "myname", ID: 123}}
以上がGolang でネストされた構造体を適切に初期化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。