Go의 내장 메소드에서 상위 필드에 액세스: 가능합니까?
Go에서 내장 메소드를 사용하면 유형을 다른 유형에 삽입할 수 있습니다. 코드 재사용 및 더 간단한 인터페이스 제공. 그러나 일반적인 질문이 생깁니다. 임베디드 메소드가 상위 유형의 필드에 액세스할 수 있습니까?
배경:
Go의 임베딩 메커니즘은 구성을 활용하여 유형의 기능을 확장하지 않고 확장합니다. 계승. 유형이 포함되면 해당 필드와 메서드가 포함 유형의 일부가 됩니다.
목표:
이 질문의 목적은 Active Record 스타일 ORM을 만드는 것과 관련이 있습니다. Go의 경우 데이터 저장소를 추상화하기 위해 사용자 구조체에 메소드가 내장되어 있습니다.
예:
type Foo struct { *Bar Name string } func (s *Foo) Method() { // How to access "Name" field from this embedded method? }
질문:
최상위 필드( 상위 필드) s.Name 또는 call과 같은 내장 메소드에서 액세스 가능 s.Method()?
답변:
Go는 내장된 메서드에서 상위 필드에 액세스하는 것을 기본적으로 지원하지 않습니다. 임베디드 메소드의 수신자는 이 경우 임베디드 유형 *Bar에 엄격하게 바인딩됩니다. 따라서 상위 필드에 직접 액세스하는 것은 불가능합니다.
대체 접근 방식:
위 내용은 Go에 포함된 메서드가 상위 필드에 액세스할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!