Beim Umgang mit generischen Schnittstellen, die verschiedene Typen unterstützen, kann es sein, dass Sie auf die Fehlermeldung „V kann nicht abgeleitet werden“ stoßen. Fehler in Go, insbesondere in den Versionen 1.20 und niedriger. So können Sie dieses Problem angehen:
Für Go 1.21 und höher wird der Fehler behoben, ohne dass Typbeschränkungen explizit angegeben werden. Die Typinferenz berücksichtigt jetzt Methodentypen, wenn einer Schnittstelle Werte zugewiesen werden, sodass der Compiler Typargumente aus den bereitgestellten Methoden ableiten kann.
In Go 1.20 und früher wird der Typ abgeleitet von V aus dem konkreten Typ, der die Einschränkung ConfigStorage[K, V] implementiert, wurde nicht unterstützt. Um den Fehler zu beheben, müssen Sie die Typparameter beim Aufruf der GetValue-Funktion explizit angeben, etwa so:
// Specify string for K and string for V GetValue[string, string](fileStorage, "key")
Mit dieser Änderung kann der Compiler jetzt den Typ von V basierend auf den bereitgestellten Typen für ableiten K und die Implementierung der Set-Methode.
Das obige ist der detaillierte Inhalt vonWie kann ich den Fehler „V kann nicht abgeleitet werden' beheben, wenn ich generische Schnittstellen in Go verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!