구조체 계층 구조를 설계할 때 Go는 유형 관계를 구성하기 위한 두 가지 접근 방식, 즉 임베딩과 빈 인터페이스를 제공합니다.
Go's "빈 메서드" 접근 방식은 인터페이스와 빈 메서드를 사용하여 유형 계층을 나타냅니다. 빈 메서드는 구현이 없는 메서드입니다. 그 목적은 순전히 유형이 인터페이스를 충족한다는 것을 표시하는 것입니다.
Object, Immovable, Building, Movable, Car 및 Bike 유형이 계층 구조를 형성하는 제공된 예에서 다음 구현은 빈 인터페이스를 사용하여 메서드는 관용적인 것으로 간주됩니다.
type Object interface { object() } type Immovable interface { Object immovable() } type Building struct { ... } type Mountain struct { ... } type Movable interface { Object movable() } type Car struct { ... } type Mountain struct { ... } func (*Building) object() {} func (*Mountain) object() {} func (*Car) object() {} func (*Bike) object() {} func (*Building) immovable() {} func (*Mountain) immovable() {} func (*Car) movable() {} func (*Bike) movable() {}
이 메서드는 유형 관계를 명시적으로 문서화하고 호환되지 않는 할당을 방지합니다. type.
Go는 구조체가 다른 구조체의 메서드를 상속할 수 있도록 하는 임베딩도 지원합니다. 임베딩을 사용하면 계층 구조를 다음과 같이 표현할 수 있습니다.
type ObjectImpl struct {} func (o *ObjectImpl) object() {} type ImmovableImpl struct { *ObjectImpl // Embed ObjectImpl struct } func (o *Immovable) immovable() {} type Building struct { *ImmovableImpl // Embed ImmovableImpl struct } type MovableImpl struct { *ObjectImpl // Embed ObjectImpl struct } func (o *Movable) movable() {} type Car struct { *MovableImpl // Embed MovableImpl struct } type Bike struct { *MovableImpl // Embed MovableImpl struct }
임베딩은 Go의 상속과 유사한 메커니즘을 활용하여 빈 메소드 수를 줄이는 대체 접근 방식을 제공합니다.
위 내용은 임베딩 또는 빈 인터페이스를 사용하여 Go에서 복잡한 구조체 계층 구조를 관용적으로 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!