Golang에서 임베디드 구조체를 초기화하는 방법
Go에서는 다른 구조체 내에 구조체를 정의하여 중첩된 데이터 구조를 만드는 것이 가능합니다. 그러나 이러한 중첩된 구조체를 초기화하는 것은 어려울 수 있습니다.
다음 예를 고려하세요.
type DetailsFilter struct { Filter struct { Name string ID int } }
내장된 Filter 구조체로 DetailsFilter 구조체를 초기화하려면 시도하면 오류가 발생할 수 있습니다. 일반 지도를 필터 필드에 할당합니다.
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"]}}
표시되는 오류는 다음과 같습니다. "사용할 수 없습니다(입력 인터페이스 {})를 필드 값의 유형 구조체로: 유형 어설션이 필요합니다."
이 오류가 발생하는 이유는 여기에서 필터에 사용된 익명 구조체 필드를 초기화하는 동안 정확한 유형을 지정해야 하기 때문입니다. 익명 구조체 내에서 필터 필드의 유형을 명시적으로 정의하여 이 문제를 해결할 수 있습니다.
type DetailsFilter struct { Filter struct { Name string ID int } } df := DetailsFilter{Filter: Filter{Name: "XYZ", ID: 5}}
또는 필터에 익명 구조체를 사용하지 않고 대신 명명된 유형을 제공하도록 선택할 수도 있습니다.
type Filter struct { Name string ID int } type DetailsFilter struct { Filter Filter } df := DetailsFilter{Filter: Filter{Name: "XYZ", ID: 5}}
두 방법 모두 중첩된 Filter 구조체를 사용하여 DetailsFilter 구조체를 초기화할 수 있습니다.
위 내용은 Go에서 임베디드 구조체를 올바르게 초기화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!