suchen
HeimBackend-EntwicklungGolangWozu dient der Tilde-Token (~) in Go Generics?

What is the Use of the Tilde Token (~) in Go Generics?

Verstehen des Tilde-Tokens (~) in Go Generics

Gos Einführung des Tilde-Tokens (~) hat Generic eine neue Dimension verliehen Programmierung. Mit diesem Token können Entwickler Typen definieren, die einen gemeinsamen zugrunde liegenden Typ haben.

Was ist der Tilde-Token?

In Go bezeichnet der Tilde-Token (~) den Satz aller Typen mit einem zugrunde liegenden Typ T. ~T gibt beispielsweise alle Typen an, deren zugrunde liegender Typ T ist.

Warum ist das so? Nützlich?

Das Tilde-Token bietet eine flexible Möglichkeit, generische Schnittstellen zu definieren, die Typen mit einem bestimmten zugrunde liegenden Typ akzeptieren können. Eine geordnete Schnittstelle könnte beispielsweise wie folgt definiert werden:

type Ordered interface {
  Integer | Float | ~string
}

Diese Schnittstelle gibt an, dass ein Typ entweder eine Ganzzahl, ein Gleitkomma oder ein Typ sein muss, dessen zugrunde liegender Typ ein String ist. Dadurch können benutzerdefinierte Typen mit einem zugrunde liegenden Zeichenfolgentyp, z. B. MyString, diese Schnittstelle erfüllen.

Zugrunde liegende Typen

Das Konzept der zugrunde liegenden Typen ist entscheidend für das Verständnis der Tilde Token. Der zugrunde liegende Typ eines Typs T ist normalerweise T selbst, außer:

  • Bei vordeklarierten numerischen, booleschen oder Zeichenfolgentypen ist der zugrunde liegende Typ der Typ selbst.
  • Bei zusammengesetzten Typen (Strukturen, Slices usw.) ist der zugrunde liegende Typ der Typ, auf den der zusammengesetzte Typ in seinem Typ verweist Deklaration.

Praktische Beispiele

Mit dem Tilde-Token können Einschränkungen erstellt werden, um die Typen einzuschränken, die eine bestimmte Schnittstelle erfüllen können. Beispielsweise könnte eine Einschränkung namens ExactSigned so definiert werden, dass nur Typen zugelassen werden, die genau int, int8, int16, int32 oder int64 sind. Eine solche Einschränkung würde keine benutzerdefinierten Typen wie MyInt8 zulassen.

Andererseits verwendet eine Einschränkung namens „constraints.Signed“ das ~-Näherungselement, um Typen zuzulassen, deren zugrunde liegender Typ int8 ist. Dadurch können benutzerdefinierte Typen wie MyInt8 die Einschränkung erfüllen.

Syntaktischer Zucker

Das Tilde-Token kann in Gewerkschaften, anonymen Einschränkungen und sogar mit syntaktischem Zucker verwendet werden. Insbesondere können Sie Näherungselemente mit einem einzigen Typ verwenden, um das Schreiben von Einschränkungen zu vereinfachen.

Zum Beispiel sind die folgenden anonymen Einschränkungen äquivalent:

func echoFixedSize[T interface { ~int8 | ~int32 | ~int64 }](t T) { /* ... */ }

func echoFixedSizeSugar[T ~int8 | ~int32 | ~int64](t T) { /* ... */ }

func echoFixedSizeSugarOne[T ~int8](t T) { /* ... */ }

Häufige Anwendungsfälle

Approximationselemente sind besonders nützlich für die Arbeit mit zusammengesetzten Typen, die Methoden benötigen. Damit beispielsweise eine Methode für einen ByteSeq-Typ deklariert werden kann, muss der zugrunde liegende Typ an den Bezeichner gebunden sein:

type ByteSeq []byte

func (b ByteSeq) DoSomething() {}

Durch die Angabe von ~[]byte in einer Einschränkung wird es möglich, ByteSeq zu instanziieren als gültiger Typ.

Einschränkungen

Es ist wichtig zu beachten, dass die Tilde Token kann nicht mit Typparametern verwendet werden. Beispielsweise ist der folgende Code ungültig:

type AnyApprox[T any] interface {
  ~T
}

Das obige ist der detaillierte Inhalt vonWozu dient der Tilde-Token (~) in Go Generics?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
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
String Manipulation in Go: Beherrschen des 'Strings' -PaketsString Manipulation in Go: Beherrschen des 'Strings' -PaketsMay 14, 2025 am 12:19 AM

Das Beherrschen des Strings -Pakets in GO -Sprache kann die Funktionen der Textverarbeitung und die Entwicklungseffizienz verbessern. 1) Verwenden Sie die Enthaltende Funktion, um Substrings zu überprüfen. 2) Verwenden Sie die Indexfunktion, um die Substringposition zu ermitteln. Vermeiden Sie vorsichtig, um häufige Fehler zu vermeiden, wie z.

Gehen Sie 'Strings' -Paket -Tipps und TricksGehen Sie 'Strings' -Paket -Tipps und TricksMay 14, 2025 am 12:18 AM

Sie sollten sich um das Strings -Paket in Go kümmern, da es die String -Manipulation vereinfachen und den Code klarer und effizienter gestalten kann. 1) Saiten verwenden. 2) Verwenden Sie Zeichenfolgen. 3) Substringpositionen durch Zeichenfolgen finden. Index und Strings.lastindex; 4) Verwenden Sie Strings.replaceAll, um Zeichenfolgen zu ersetzen; 5) Verwenden von Saiten.Builder, um Strings effizient zu spleißen; 6) Überprüfen Sie die Eingaben immer, um unerwartete Ergebnisse zu vermeiden.

'Strings' -Paket in Go: Ihre Anlaufstelle für String-Operationen'Strings' -Paket in Go: Ihre Anlaufstelle für String-OperationenMay 14, 2025 am 12:17 AM

ThestringspackagesingoiSessentialSticientStringManipulation.1) ItofferSimpeyet-PowerfulfunctionsForfunctionStaskSlikechkesSubstringsandjoiningStrings.2) itHandlesunicodewell, mit Functionslikestrings.Fieldsfordhitspace-separatierte Vala-Valuation.3) -Fassenderformance, st

Go Bytes Package vs Strings Paket: Welches soll ich verwenden?Go Bytes Package vs Strings Paket: Welches soll ich verwenden?May 14, 2025 am 12:12 AM

Whendecidingbetoengo'sByteSpackageAndStringSpackage, useBytes.BufferForBinaryDataandStrings.builderForStringoperationen.1)

So verwenden Sie das 'Saiten' -Paket, um Saiten Schritt für Schritt zu manipulierenSo verwenden Sie das 'Saiten' -Paket, um Saiten Schritt für Schritt zu manipulierenMay 13, 2025 am 12:12 AM

Das Strings -Paket von GO bietet eine Vielzahl von String -Manipulationsfunktionen. 1) Verwenden Sie Strings.Contains, um Substrings zu überprüfen. 2) Verwenden Sie Strings. 3) Fusion Strings durch Strings.join. 4) Verwenden Sie Strings.trimspace oder Zeichenfolgen. 5) Ersetzen Sie alle angegebenen Substrings durch Strings.replaceall. 6) Verwenden Sie Strings.Hasprefix oder Strings.hassuffix, um das Präfix oder das Suffix der Zeichenfolge zu überprüfen.

GO Strings Paket: Wie verbessern Sie meinen Code?GO Strings Paket: Wie verbessern Sie meinen Code?May 13, 2025 am 12:10 AM

Durch die Verwendung des Pakets für GO Language Strings kann die Codequalität verbessert werden. 1) Verwenden Sie Zeichenfolgen. 2) Kombinieren Sie Strings.Split () und Zeichenfolgen. Enthält (), um Text zu verarbeiten und auf Probleme der Fallsensitivität zu achten. 3) Vermeiden Sie den Missbrauch von Strings.replace () und in Betracht, regelmäßige Ausdrücke für eine große Anzahl von Substitutionen zu verwenden. 4) Verwenden Sie Strings.Builder, um die Leistung häufig Spleißstrings zu verbessern.

Was sind die nützlichsten Funktionen im Go Bytes -Paket?Was sind die nützlichsten Funktionen im Go Bytes -Paket?May 13, 2025 am 12:09 AM

Das Bytes -Paket von GO bietet eine Vielzahl von praktischen Funktionen, um Byte -Schneiden zu verarbeiten. 1.Bytes.Contains wird verwendet, um zu prüfen, ob das Byte -Schicht eine bestimmte Sequenz enthält. 2.Bytes.Plit wird verwendet, um Bytescheiben in kleinere Produkte aufzuteilen. 3.Bytes.Join wird verwendet, um mehrere Bytescheiben in eine zu verkettet. 4.Bytes.trimspace wird verwendet, um die vorderen und hinteren Rohlinge von Bytescheiben zu entfernen. 5.Bytes.Equal wird verwendet, um zu vergleichen, ob zwei Byte -Scheiben gleich sind. 6.Bytes.Index wird verwendet, um den Startindex von Unterschriften in den Vargerlices zu ermitteln.

Beherrschen der Binärdatenhandhabung mit GOs 'Codierung/Binär' -Paket: Ein umfassender LeitfadenBeherrschen der Binärdatenhandhabung mit GOs 'Codierung/Binär' -Paket: Ein umfassender LeitfadenMay 13, 2025 am 12:07 AM

Thecoding/binarypackageingoiSessentialBecauseitStrovidesastandardizedwaytoreadandWriteBinaryData, sicherstellen, dass Cross-Plattformcompatibilität und HandlingDifferentendiang.itoffersfunctionsLikeread, Schreiben, Readuvarint und WriteuvarintforprecisecontroloverinaryTecontrolovertinBinartinBinary, sichergestellt

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Nordhold: Fusionssystem, erklärt
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

MantisBT

MantisBT

Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen