두 가지 질문 또는 하나의 질문이 맞는지 잘 모르겠습니다 만, 두 부분으로 나에게 하나의 질문 인 것처럼 보입니다 - 어떻게 인터페이스를 사용해야합니까?인터페이스에 따라 달라지는 golang 인터페이스
인터페이스의 메소드는 전역 적으로 범위가 지정됩니다. 인터페이스 A와 인터페이스 B가 모두 동일한 메소드 Foo를 구현하지만 다른 인수 또는 반환 유형을 구현하는 경우 두 가지 모두를 구현할 수 없습니다. 동일한 유형에서 동일한 시간. 예를 들어, 한 인터페이스에서 GetBytes() 메서드는 반환 형식 [] 바이트 및 다른 ([] 바이트, 오류) 있습니다이 문제를 어떻게 극복해야합니까?
내가 가지고있는 또 다른 문제는 같은 인터페이스에 정의 된 인터페이스 B를 반환하는 인터페이스 A 인터페이스를 정의하려고 할 때입니다. 이제 B를 구현하는 구조체를 반환하면 A를 구현하는 객체를 만들고 싶습니다.이 메서드가 A에서 메서드를 구현하고 B에 대한 종속성을 만들도록 추론 할 정도로 똑똑하지 않습니다. 이것은 완전히 처음부터 인터페이스가 작동하는 방식의 포인트. 이 문제를 어떻게 피할 수 있습니까? 다음 구조체에 대한
type B interface {
Bar()
}
type A interface {
Foo() B
}
:
이type b_impl struct{}
func (b b_impl) Bar() {}
type a_impl struct{}
func (a a_impl) Foo() b_impl {}
이와 인터페이스 A를 만족하지 않는 foo는 방법은 내가 필요 내가 가지고있는 경우, 예를 들어
, 확인하십시오 :
func (a a_impl) Foo() B {}
이는 B가 선언 된 패키지에 종속됩니다.
"이 문제를 어떻게 극복해야합니까?" Go는 메소드 오버로딩을 지원하지 않기 때문에 당신은 할 수 없습니다. https://golang.org/doc/faq#overloading을 참조하십시오. 나는 두 번째 질문에 대해 충분히 이해하지 못한다. 어쩌면 코드 예제를 제공하는 것이 도움이 될 것입니다. – smarx
감사합니다. @smarx - 두 번째 부분에 대한 자세한 내용과 함께 질문을 편집했습니다. – gsf
두 번째 문제에 관해 할 수있는 일이 없다고 생각합니다. – smarx