Sicherstellen der Feldpräsenz in generischen Funktionen
In Go kann das Erstellen generischer Funktionen, die Werte mit bestimmten Feldern akzeptieren, eine Herausforderung sein. Mithilfe von Generika können wir versuchen, solche Einschränkungen durchzusetzen, wie im folgenden Beispiel gezeigt:
package main import ( "fmt" ) func Print[T IDer](s T) { fmt.Print(s.ID) } func main() { Print(Person{3, "Test"}) } type IDer interface { ~struct{ ID int } } type Person struct { ID int Name string } type Store struct { ID int Domain string }
Dieser Ansatz schlägt jedoch fehl, da die generische Implementierung von Go 1.18 keine Unterstützung für Strukturtypen bietet. Daher können wir diesen Mechanismus nicht nutzen, um das Vorhandensein bestimmter Felder in übergebenen Werten zu garantieren.
Daher ist es in Go notwendig, Methoden innerhalb von Schnittstellen zu definieren, um auf gemeinsame Felder zuzugreifen, wenn es um Gewerkschaften geht oder um Felder sicherzustellen Präsenz in generischen Funktionen.
Das obige ist der detaillierte Inhalt vonWie kann ich die Präsenz vor Ort bei Go Generics garantieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!