Können Sie Typen zur Unterstützung von Indizes in Go 1.18 Generics einschränken?

Patricia Arquette
Freigeben: 2024-10-31 20:53:29
Original
436 Leute haben es durchsucht

Can You Constrain Types to Support Indices in Go 1.18 Generics?

Implementierung von Indexeinschränkungen in Go 1.18 Generics

Mit der Einführung von Generics in Go 1.18 können Entwickler Typen mit Typeinschränkungen definieren und so sicherstellen, dass nur bestimmte Typen zulässig sind. Diese Flexibilität ist von entscheidender Bedeutung bei der Implementierung von Algorithmen, die auf Typen basieren, die Indizes unterstützen.

Können Sie Typen mit einer Indexmethode einschränken?

Um Typen mit Indizes einzuschränken, könnte man darüber nachdenken Verwenden der Indexierbarkeitseigenschaft. Die einzige sinnvolle Einschränkung, die Sie erstellen können, ist jedoch der Typ Indexable interface { ~[]byte | ~string }. Diese Einschränkung beschränkt die Typen auf Byte-Slices und Strings.

Warum ist eine Union-Einschränkung begrenzt?

Die für Union-beschränkte Typen zulässigen Operationen sind auf die von unterstützten beschränkt alle Typen im Einschränkungssatz. Um die Indizierung zu unterstützen, müssen Typen in der Union identische Schlüssel- und Elementtypen haben.

Außerdem müssen Kartentypen in der Union identische Schlüsseltypen haben. Und bei Arrays ist ihre Länge Teil des Typs, was es unpraktisch macht, eine Vereinigung für alle möglichen Längen zu definieren.

Praktische Implementierung für die Indizierung

Daher die einzige Union, die die Indizierungsanforderung erfüllt, ist []byte | Zeichenfolge. Da Byte ein Alias ​​für uint8 ist, können Sie auch []uint8 mit dieser Einschränkung verwenden.

Einschränkungen der Union-Einschränkung für die Indizierung

Während die Union-Einschränkung []byte | string unterstützt die Indizierung, nicht den Bereich. Dies liegt daran, dass die Union keinen Kerntyp hat.

Zusammenfassend lässt sich sagen, dass die Beschränkung von Typen auf diejenigen, die Indizes in Go-Generika unterstützen, auf den spezifischen Einschränkungstyp Indexable interface { ~[]byte | beschränkt ist ~string }. Ansonsten gibt es keine alternative Möglichkeit, eine Einschränkung zu definieren, die alle indizierbaren Typen umfasst.

Das obige ist der detaillierte Inhalt vonKönnen Sie Typen zur Unterstützung von Indizes in Go 1.18 Generics einschränken?. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!