인터페이스를 구현하는 포인터의 일반 유형
Go에서 인터페이스로 작업할 때 포인터를 인터페이스를 구현하는 구조체입니다. 일반 함수를 정의할 때 이는 어려울 수 있습니다.
질문:
인터페이스를 구현하는 포인터에 대한 일반 유형을 어떻게 생성할 수 있나요?
답변:
옵션 1: 수정 인터페이스 정의
type A[P any] interface { SomeMethod() *P }
func Handler[P any, T A[P]](callback func(result T)) { result := new(P) callback(result) }
옵션 2: 인터페이스 래핑(정의 수정이 불가능한 경우)
type MyA[P any] interface { A *P }
func Handler[P any, T MyA[P]](callback func(result T)) { result := new(P) callback(result) }
사용법:
두 옵션 모두 A 인터페이스를 구현하는 구조체에 대한 포인터를 일반 인터페이스에 전달할 수 있습니다. 함수 핸들러. 예:
type Aimpl struct {} func (a *Aimpl) SomeMethod() {} func main() { Handler(func(a *Aimpl) { fmt.Printf("%#v\n", a) }) }
위 내용은 Go에서 인터페이스를 구현하는 포인터의 일반 유형을 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!