인터페이스 구현을 위한 일반 포인터
Go에서는 인터페이스에 대한 포인터를 허용하는 일반 함수를 정의하는 것이 어려울 수 있습니다. SomeMethod()가 있는 인터페이스 A를 생각해 보세요.
그리고 A를 구조체 포인터로 구현한다고 가정합니다.
함수를 취하는 일반 함수 핸들러를 생성하려면 A 매개변수를 사용하면 다음과 같이 정의하는 것이 바람직합니다.
그러나 다음에는 몇 가지 제약이 있습니다. 고려하세요.
모든 유형 매개변수로 시도
처음에는 포인터 구현을 허용하기 위해 유형 매개변수로 인터페이스를 정의하는 것이 가능할 것처럼 보일 수 있습니다.
그러나 다음과 같은 경우에는 실패합니다. 오류:
해결책: 유형 매개변수화된 인터페이스
이를 극복하려면 구현 유형이 포인터여야 하는 유형 매개변수를 사용하여 인터페이스를 선언할 수 있습니다. 해당 유형 매개변수에:
이 인터페이스를 사용하면 Handler 함수를 다음과 같이 사용할 수 있습니다. 수정됨:
이제 코드는 예상대로 Handler를 호출할 수 있습니다.
인터페이스 래퍼를 사용한 대안
A는 수정할 수 없습니다. 대체 접근 방식은 이를 사용자 정의로 래핑하는 것입니다. 인터페이스:
따라서 핸들러 함수를 수정합니다.
두 솔루션 모두 인터페이스 구현에 대한 포인터를 허용하는 일반 함수 생성을 허용합니다.
위 내용은 인터페이스 구현에 대한 포인터를 허용하는 일반 Go 함수를 어떻게 만들 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!