Generische Schnittstelle von Zeigern
In Go kann die Definition einer Schnittstelle für eine Zeigerimplementierung über Generics erfolgen. Stellen Sie sich das folgende Szenario vor:
Problem:
Lösung unter Verwendung einer generischen Schnittstelle mit Typparameter:
Um dies zu erreichen, können Sie die A-Schnittstelle mit deklarieren ein Typparameter, der sicherstellt, dass der implementierende Typ ein Zeiger auf seinen Typparameter ist:
type A[P any] interface { SomeMethod() *P }
Ändern Sie dann die Signatur des Handlers als folgt:
func Handler[P any, T A[P]](callback func(result T)) { result := new(P) callback(result) }
Lösung mit Wrapper-Schnittstelle:
Wenn Sie die Definition von A nicht ändern können, können Sie sie in Ihre eigene Schnittstelle MyA einbinden:
type MyA[P any] interface { A *P }
Aktualisieren Sie dann die Signatur des Handlers, um die MyA-Schnittstelle zu verwenden:
func Handler[P any, T MyA[P]](callback func(result T)) { result := new(P) callback(result) }
Das obige ist der detaillierte Inhalt vonWie können Generics in Go Funktionen mit zeigerbasierten Schnittstellenparametern verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!