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를 초기화하려고 시도합니다. 중첩된 익명 구조체 필터가 있는 구조체입니다. 그러나 지도에서 필터 필드를 초기화하려고 하면 오류가 발생합니다.
can not use (type interface {}) as type struct in field value : need type assertion
권장되는 해결 방법은 생성 중에 중첩된 익명 구조체를 초기화하지 않는 것입니다. 대신 값이 0인 구조체를 초기화한 다음 중첩 필드에 값을 할당하세요.
df := DetailsFilter{} df.Filter.Name = "myname" df.Filter.ID = 123
또 다른 대안은 익명 구조체 유형의 이름을 지정하고 명시적으로 초기화하는 것입니다.
type Filter struct { Name string ID int } type DetailsFilter struct { Filter Filter } df := DetailsFilter{Filter: Filter{Name: "myname", ID: 123}}
위 내용은 Golang에서 중첩 구조체를 올바르게 초기화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!