Wie können wir indexierbare Typen in Go 1.18 Generics effektiv einschränken?

Patricia Arquette
Freigeben: 2024-10-30 03:49:28
Original
782 Leute haben es durchsucht

How Can We Effectively Constrain Indexable Types in Go 1.18 Generics?

Indizierungsbeschränkungen in Go 1.18 Generics

Mit der Einführung von Generics in Go 1.18 haben Entwickler die Möglichkeit, Algorithmen zu implementieren, die mit spezifischen Typen. Eine häufige Anforderung ist die Verwendung von Typen, die die Indizierung unterstützen, wie Arrays, Slices, Maps und Strings.

Indizierbare Einschränkung

Um einen Typparameter auf indizierbare Typen zu beschränken Erwägen Sie die Verwendung der folgenden Einschränkung mit einer Union:

<code class="go">type Indexable interface {
    ~[]byte | ~string
}</code>
Nach dem Login kopieren

Einschränkungen der indizierbaren Einschränkung

Während die obige Einschränkung für die Indizierung von Bytes und Zeichenfolgen funktioniert, gibt es Einschränkungen für Verwendung mit anderen indizierbaren Typen wie Karten und Arrays:

  • Karten: Die Union darf nur Kartentypen mit identischen Schlüssel- und Elementtypen enthalten. Diese Einschränkung macht es für generische Algorithmen unpraktisch, die Karten mit unterschiedlichen Schlüsseln und Werten verarbeiten müssen.
  • Arrays: Die Länge eines Arrays ist Teil seines Typs, daher müsste eine Union angegeben werden alle möglichen Längen. Dies kann umständlich und anfällig für Fehler außerhalb der Grenzen sein.

Alternativer Ansatz

Aufgrund dieser Einschränkungen ist die einzige praktische Union, die die Indizierung unterstützt []Byte | Zeichenfolge. Diese Union ermöglicht Indizierungsoperationen, unterstützt jedoch keine Bereichsoperationen, da ihr ein Kerntyp fehlt.

Beispielverwendung

Das folgende Beispiel zeigt, wie die Indexable-Einschränkung verwendet wird:

<code class="go">func GetAt[T Indexable](v T, i int) byte {
    return v[i]
}</code>
Nach dem Login kopieren

Diese Funktion nimmt einen indizierbaren Wert und einen Index und gibt das Byte am angegebenen Index zurück.

Fazit

While Go 1.18 bietet Eine Möglichkeit, Typen mithilfe einer Union auf indizierbare Typen zu beschränken. Die Einschränkungen dieser Einschränkung bedeuten, dass sie nur für eine begrenzte Anzahl von Anwendungsfällen praktisch ist, nämlich die Indizierung von Bytes und Zeichenfolgen.

Das obige ist der detaillierte Inhalt vonWie können wir indexierbare Typen in Go 1.18 Generics effektiv 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!