Heim >Backend-Entwicklung >Golang >Warum können die Schnittstellenmethoden von Go keine Typparameter haben?
Generika in Go: Einschränkungen bei Schnittstellenmethodenparametern
In Go 1.18beta2 kann es beim Definieren einer Schnittstellenmethode mit generischen Parametern zu Problemen kommen der Fehler „Schnittstellenmethode darf keine Typparameter haben.“ Dieser Artikel beleuchtet diese Einschränkung und untersucht mögliche Lösungen.
Warum sind Typparameter in Schnittstellenmethoden nicht zulässig?
Der Grund für diese Einschränkung liegt im Design Überlegungen zu Generika und Typparametern. Schnittstellen definieren Verträge für eine Reihe von Methodensignaturen und -verhalten, während generische Methoden einen Mechanismus zum Abstrahieren über Typen bereitstellen. Das Zulassen von Typparametern in Schnittstellenmethoden würde zu Komplexitäten führen bei:
Überwindung der Einschränkung
Obwohl Typparameter nicht direkt in Schnittstellenmethoden verwendet werden können, gibt es alternative Lösungen:
Typparameter in Schnittstellendefinition verschieben:
Anstatt den Typparameter innerhalb der Schnittstellenmethode zu deklarieren, verschieben Sie ihn zur Schnittstellendefinition selbst. Dadurch kann sich die Schnittstelle auf der Grundlage des spezifischen Typparameters spezialisieren:
type Reader[V Unmarshaler] interface { Read(bucket []byte, k ...[]byte) ([][]byte, error) ReadDoc(bucket []byte, factory func() (V, error), k ...[]byte) ([]V, error) }
Fazit
Die Beschränkung der Typparameter in Schnittstellenmethoden ist eine bewusste Entwurfsentscheidung, die sichergestellt werden muss Klarheit, Leistung und konsistente Implementierung von Schnittstellen in Go-Generika. Auch wenn dies zunächst eine Herausforderung darstellt, bieten die oben bereitgestellten alternativen Lösungen praktische Möglichkeiten, diese Einschränkung zu umgehen und die Leistungsfähigkeit von Generika in Ihrem Code zu nutzen.
Das obige ist der detaillierte Inhalt vonWarum können die Schnittstellenmethoden von Go keine Typparameter haben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!