오류 메시지:
cannot use &f (type *Bar) as type StringerGetter in argument to Printer: *Bar does not implement StringerGetter (wrong type for GetStringer method) have GetStringer() *Foo want GetStringer() fmt.Stringer
Go에서 인터페이스 메소드는 다음에 의존합니다. 정확한 유형 일치. 즉, 인터페이스를 반환하는 함수는 인터페이스와 해당 구현 모두에서 정확히 동일한 유형을 가져야 합니다. 일치하지 않으면 Go는 컴파일 시간 오류를 생성합니다.
이 경우 StringerGetter 인터페이스는 fmt.Stringer를 반환하는 GetStringer() 메서드를 지정합니다. 그러나 구체적인 유형 Bar의 GetStringer() 구현은 fmt.Stringer가 아닌 Foo 구조체에 대한 포인터를 반환합니다. 이러한 불일치로 인해 컴파일 시간 오류가 발생합니다.
해결책:
인터페이스를 정확하게 구현:
콘크리트 유형을 새 유형으로 래핑합니다.
어설션 사용:
중요 고려 사항:
위 내용은 다음은 오류의 \'이유\' 및 \'어떻게\'를 다루는 몇 가지 제목 옵션입니다. \'왜\'에 대한 강조 * 내 Go 코드가 St 유형으로 \'cannot use...를 던지는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!