Heim >Backend-Entwicklung >Golang >Wie kann Go Generics die Verfügbarkeit bestimmter Felder in übergebenen Werten erzwingen?
Generika verwenden, um die Feldverfügbarkeit in übergebenen Werten zu erzwingen
In Go können Generika eingesetzt werden, um die Typsicherheit zu verbessern und die Notwendigkeit einer expliziten Verwendung zu beseitigen Typguss. Bei der Arbeit mit Werten, die bestimmte Felder erfordern, stellt die aktuelle Implementierung von Generika in Go 1.18 jedoch eine Herausforderung dar.
Problemstellung
Wie im bereitgestellten Beispiel dargelegt, Versuche, eine generische Funktion zu definieren, die Werte mit einem bestimmten Feld akzeptiert, z. B. ID int, waren mit dem aktuellen Ansatz nicht erfolgreich. Das Ziel besteht darin, sicherzustellen, dass jeder an die Funktion übergebene Wert diese Eigenschaft hat, auf die innerhalb der Funktion selbst zugegriffen werden kann.
Einschränkungen von Go 1.18 Generics
Derzeit Go Generika unterstützen keine Strukturtypen, was bedeutet, dass sie nicht allein anhand ihrer Struktur bestimmen können, ob eine Struktur ein bestimmtes Feld hat. Die ~T-Näherung (Tilde-Typ) wird verwendet, um Typen anzugeben, deren zugrunde liegender Typ genau T ist.
Im Beispiel gibt ~struct{ ID int } Typen an, deren zugrunde liegender Typ genau struct{ ID int } ist. Dies gilt nicht für Strukturen, die neben anderen Feldern das Feld „ID int“ besitzen.
Lösung
Da in Schnittstelleneinschränkungen keine Feldbegriffe vorhanden sind, ist eine Durchsetzung nicht möglich die Verfügbarkeit bestimmter Felder mithilfe von Generika in Go 1.18, ohne eine Methode in einer Schnittstelle zu definieren. Für den Fall, dass der Zugriff auf ein gemeinsames Feld in einer Union gewünscht wird, sollte daher die bereitgestellte Erklärung zu Rate gezogen werden.
Das obige ist der detaillierte Inhalt vonWie kann Go Generics die Verfügbarkeit bestimmter Felder in übergebenen Werten erzwingen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!