> 백엔드 개발 > Golang > 구체적인 유형으로 인터페이스 메서드를 구현할 때 인터페이스 불일치를 처리하는 방법은 무엇입니까?

구체적인 유형으로 인터페이스 메서드를 구현할 때 인터페이스 불일치를 처리하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-10-27 04:20:02
원래의
490명이 탐색했습니다.

 How to Handle an Interface Mismatch When Implementing Interface Methods with Concrete Types?

Go 인터페이스 메소드 반환 인터페이스가 구체적인 유형을 반환하는 메소드와 일치하지 않습니다

문제:

인터페이스를 반환하는 인터페이스 메서드는 구현 유형이 인터페이스를 구현하는 구체적인 유형이 아니라 인터페이스 자체를 선언하는 경우에만 작동합니다.

질문:

어떻게 할 수 있나요? 타사의 구체적인 유형에 대한 수정을 피하거나 이에 대해 직접 인터페이스하면서 이 문제를 해결하시겠습니까?

답변:

인터페이스 불일치를 조정하기 위해 우리는 캡슐화 기술을 사용합니다.

1. 래퍼 기술:

타사의 구체적인 유형을 래핑하고 원하는 인터페이스를 제공하는 새로운 유형을 만듭니다.

<code class="go">type MyBar Bar

func (b *MyBar) GetStringer() fmt.Stringer {
    return &Foo{"foo"}
}</code>
로그인 후 복사

이 접근 방식을 사용하면 독창적인 콘크리트 유형.

2. 임베디드 유형 기술:

타사 구체적 유형을 새 유형에 포함하고 필요한 인터페이스 구현 제공:

<code class="go">type MyBar struct{ Bar }

func (b *MyBar) GetStringer() fmt.Stringer {
    return b.Bar.GetStringer()
}</code>
로그인 후 복사

포함은 원래 구체적인 유형의 기능을 유지하면서 동시에 원하는 인터페이스로 확장합니다.

이러한 기술을 사용하면 원래의 구체적인 유형이 그렇지 않은 경우에도 지정된 인터페이스를 따르는 사용자 정의 유형을 생성할 수 있습니다. 이는 타사 유형을 더 넓은 인터페이스 기반 시스템에 통합하는 유연한 접근 방식을 제공합니다.

위 내용은 구체적인 유형으로 인터페이스 메서드를 구현할 때 인터페이스 불일치를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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