> 백엔드 개발 > Golang > 필드 참조를 사용하여 Go에서 중첩된 구조체 필드를 초기화하는 방법은 무엇입니까?

필드 참조를 사용하여 Go에서 중첩된 구조체 필드를 초기화하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-12-24 12:59:14
원래의
928명이 탐색했습니다.

How to Initialize Nested Struct Fields in Go Using Field References?

필드 참조를 사용한 중첩 구조체 초기화

이 작업은 상위 구조체에 속하는 필드를 설정하는 동안 리터럴 값으로 중첩 구조체를 초기화하는 것입니다. . 예는 다음과 같습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿