Heim > Backend-Entwicklung > Golang > Kann Go Generics bestimmte Felder in übergebenen Werten ohne Schnittstellenmethoden erzwingen?

Kann Go Generics bestimmte Felder in übergebenen Werten ohne Schnittstellenmethoden erzwingen?

Mary-Kate Olsen
Freigeben: 2024-12-07 11:00:17
Original
360 Leute haben es durchsucht

Can Go Generics Enforce Specific Fields in Passed Values Without Interface Methods?

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage