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>
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:
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>
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!