포인터의 일반 인터페이스
Go에서 포인터 구현을 위한 인터페이스 정의는 제네릭을 통해 수행할 수 있습니다. 다음 시나리오를 고려하십시오.
문제:
유형 매개변수가 있는 일반 인터페이스를 사용하는 솔루션:
이를 달성하려면 , 유형 매개변수를 사용하여 A 인터페이스를 선언하여 구현 유형이 해당 유형에 대한 포인터인지 확인할 수 있습니다. 매개변수:
type A[P any] interface { SomeMethod() *P }
그런 다음 Handler의 서명을 다음과 같이 수정합니다.
func Handler[P any, T A[P]](callback func(result T)) { result := new(P) callback(result) }
래퍼 인터페이스를 사용하는 솔루션:
할 수 없는 경우 A의 정의를 수정하면 이를 자신만의 인터페이스로 래핑할 수 있습니다. MyA:
type MyA[P any] interface { A *P }
그런 다음 MyA 인터페이스를 사용하도록 핸들러의 서명을 업데이트합니다.
func Handler[P any, T MyA[P]](callback func(result T)) { result := new(P) callback(result) }
위 내용은 Go의 제네릭은 포인터 기반 인터페이스 매개변수를 사용하여 함수를 어떻게 처리할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!