Grundlegendes zu Typparametern von Schnittstellenmethoden in Go
In Go-Generika dürfen Schnittstellenmethoden keine Typparameter haben. Diese Einschränkung ergibt sich aus grundlegenden Designüberlegungen, die im Vorschlag zu Typparametern dargelegt sind.
Warum sind Typparameter in Schnittstellen verboten?
Implementieren generischer Abstraktionen
Obwohl Typparameter in Schnittstellenmethoden nicht zulässig sind, bietet die Sprache einen alternativen Ansatz. Sie können den Typparameter in die Schnittstellentypdefinition selbst verschieben, wie unten gezeigt:
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 bewahrt die gewünschte generische Abstraktion, ohne die Typparameterbeschränkung der Schnittstellenmethode zu verletzen.
Das obige ist der detaillierte Inhalt vonWarum können Go-Schnittstellenmethoden keine Typparameter haben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!