필드 참조를 사용한 중첩 구조체 초기화
이 작업은 상위 구조체에 속하는 필드를 설정하는 동안 리터럴 값으로 중첩 구조체를 초기화하는 것입니다. . 예는 다음과 같습니다.
type A struct { MemberA string } type B struct { A MemberB string }
아래 표시된 대로 구조체 리터럴에서 MemberA를 직접 초기화하려는 시도는 실패합니다.
b := B { MemberA: "test1", MemberB: "test2", } fmt.Printf("%+v\n", b)
이로 인해 "알 수 없는 B 필드 '라는 오류가 발생합니다. 구조체 리터럴의 MemberA'."
MemberA를 올바르게 초기화하려면 다음의 유효한 인스턴스를 제공해야 합니다. 이 코드에 표시된 대로 상위 구조체 A:
b := B { A: A{MemberA: "test1"}, // Initialize the parent struct instance MemberB: "test2", }
컴파일러 오류 메시지 "구조 리터럴의 알 수 없는 B 필드 'MemberA'"는 MemberA가 직접 B의 알려진 필드가 아님을 나타냅니다. 대신 임베디드 A 유형에 속합니다. B 구조체를 초기화할 때 익명 A 인스턴스는 유형 이름 A로만 알려지며 해당 멤버는 생성될 때까지 인스턴스 외부에 표시되지 않습니다.
위 내용은 필드 참조를 사용하여 Go에서 중첩된 구조체 필드를 초기화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!