Heim >Backend-Entwicklung >Golang >Kann Go Generics Typparameter in Schnittstellenmethodendefinitionen verarbeiten?
Typparameter in Schnittstellenmethoden: Ein Go-Generika-Dilemma
Bei Gos Streben nach Generika taucht ein eigenartiger Stolperstein auf: das Typverbot Parameter innerhalb von Schnittstellenmethodendefinitionen. Diese Einschränkung, auf die ein Entwickler stößt, der versucht, einen Schlüssel-/Wertspeicher zu abstrahieren, lässt uns fragen, warum und ob es eine Lösung gibt.
Begründung hinter der Einschränkung
The Go Das Kernteam hat aus mehreren Gründen eine bewusste Entwurfsentscheidung getroffen, Typparameter in Schnittstellen nicht zuzulassen:
Umgehung der Einschränkung
Die Einschränkung kann zwar frustrierend sein, ist aber nicht unüberwindbar. Die im Typparametervorschlag vorgeschlagene Lösung besteht darin, den Typparameter in die Schnittstellentypdefinition selbst zu verschieben:
type Reader[V Unmarshaler] interface { Read(bucket []byte, k ...[]byte) ([][]byte, error) ReadDoc(bucket []byte, factory func() (V, error), k ...[]byte) ([]V, error) } type Unmarshaler interface { UnmarshalKV(v []byte) error }
Dieser Ansatz ermöglicht typsichere generische Schnittstellen unter Beibehaltung der Designbeschränkungen der Sprache.
Das obige ist der detaillierte Inhalt vonKann Go Generics Typparameter in Schnittstellenmethodendefinitionen verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!