Heim >Backend-Entwicklung >Golang >Wie können Generics in Go Funktionen mit zeigerbasierten Schnittstellenparametern verarbeiten?
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!