문제 설명
Go Due에서는 구조체의 계층 구조를 만드는 것이 어려울 수 있습니다. 명시적인 상속이 부족하기 때문입니다. Go 컴파일러의 AST 구현은 빈 메서드를 사용하여 인터페이스를 표현하므로 관용적 특성과 잠재적 복잡성에 대한 의문이 제기됩니다.
관용적 솔루션
Go는 기존 상속을 지원하지 않지만 , 이는 표현을 위한 대체 구성을 특징으로 합니다. 계층 구조:
type Object interface { object() } type ObjectImpl struct {} func (o *ObjectImpl) object() {} type Immovable interface { Object immovable() } type ImmovableImpl struct { ObjectImpl // Embed ObjectImpl } func (o *Immovable) immovable() {} type Building struct { ImmovableImpl // Embed ImmovableImpl // Building-specific fields }
이 접근 방식에서 Building은 명시적인 빈 메서드가 필요 없이 Object 및 Immovable의 메서드를 자동으로 상속합니다.
빈 메서드 줄이기
빈 메소드는 유형 제약 조건을 문서화하고 적용하는 데 유용하지만 메소드를 사용하면 이를 줄일 수 있습니다. 포함:
요약하자면 Go에서 관용적인 구조체 계층 구조를 생성하려면 임베디드 인터페이스와 메소드를 신중하게 사용해야 합니다. 유형 관계를 설정하고 제약 조건을 적용하기 위한 삽입
위 내용은 Go에서 어떻게 계층적 구조체를 관용적으로 만들 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!