Sicherstellen, dass übergebene Werte bestimmte Felder mithilfe von Generika in Go haben
Problem:
Entwickler benötigen häufig generische Funktionen in Go, die Werte mit bestimmten Feldern akzeptieren. Obwohl Versuche mit verschiedenen Ansätzen unternommen wurden, war es eine Herausforderung, eine praktikable Lösung zu finden.
Frage:
Kann eine generische Funktion in Go implementiert werden, um das Vorhandensein bestimmter Felder zu erzwingen ( z. B. ein „ID int“-Feld) für übergebene Werte ohne Verwendung einer Schnittstellenmethode (z. B. „GetID()“ int")?
Antwort:
Bedauerlicherweise lautet die Antwort Nein.
In der generischen Implementierung von Go für Version 1.18 werden Strukturtypen verwendet werden nicht unterstützt. Daher ist eine Methode innerhalb einer Schnittstelle erforderlich, um auf gemeinsame Felder in übergebenen Werten zuzugreifen.
Es ist wichtig klarzustellen, dass die Tilde-Typ-Syntax (~T) eine Menge von Typen bezeichnet, deren zugrunde liegender Typ genau T ist. Also „~struct{ ID int }“ umfasst keine Strukturen mit einem „ID int“-Feld und zusätzlichen Feldern.
Es gibt zwar Vorschläge, diese Einschränkung zu beheben, sie werden jedoch nicht implementiert Gehen Sie 1.18.
Das obige ist der detaillierte Inhalt vonKann Go Generics bestimmte Felder in übergebenen Werten ohne Schnittstellenmethoden erzwingen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!