Go 인터페이스를 사용하여 다양한 유형에 대한 메서드 구현의 중복성 극복
Go에서 인터페이스는 다음과 같은 공통 메서드 서명을 정의하는 방법을 제공합니다. 다양한 유형으로 구현됩니다. 이를 통해 다형성 및 코드 재사용이 가능하지만 여러 유형이 동일한 인터페이스를 구현할 때 중복 구현이 발생할 수 있습니다.
다음 시나리오를 고려해보세요. First와 Second라는 두 개의 구조체가 있는데 둘 다 인터페이스를 구현해야 합니다. PrintStr() 메소드를 사용하는 A. 각 구조체에서 개별적으로 메서드를 구현하는 것은 중복됩니다.
type First struct { str string } type Second struct { str string } type A interface { PrintStr() } func (f First) PrintStr() { fmt.Print(f.str) } func (s Second) PrintStr() { fmt.Print(s.str) }
중복성 극복
구현을 복제하는 대신 공통 항목을 캡슐화하는 기본 유형을 생성할 수 있습니다. 기능. 그런 다음 이 기본 유형을 First와 Second에 모두 포함하여 단일 구현을 재사용할 수 있습니다.
type WithString struct { str string } type First struct { WithString } type Second struct { WithString } type A interface { PrintStr() } func (w WithString) PrintStr() { fmt.Print(w.str) }
이 접근 방식은 중복성을 제거하고 유형 안전성을 유지합니다. 기본 유형 WithString은 여러 유형에서 재사용할 수 있는 공통 기능을 그룹화하는 편리한 방법으로 작동합니다.
사용법
PrintStr() 메서드를 사용하려면 간단히 First 또는 Second의 인스턴스를 생성하고 WithString 유형을 삽입하면 됩니다.
a := First{ WithString: WithString{ str: "foo", }, }
결론
기본 유형과 삽입을 활용하면 다음을 위한 메소드 구현을 간소화할 수 있습니다. 동일한 인터페이스를 구현하는 다른 유형. 이 접근 방식은 코드 재사용을 촉진하고 중복성을 줄이며 유형 안전성을 보장합니다.
위 내용은 Go 인터페이스를 사용할 때 중복 메서드 구현을 어떻게 피할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!