Heim > Backend-Entwicklung > Golang > Wie geht der ~-Token in Go Generics mit zugrunde liegenden Typen um?

Wie geht der ~-Token in Go Generics mit zugrunde liegenden Typen um?

Mary-Kate Olsen
Freigeben: 2024-12-14 21:35:12
Original
295 Leute haben es durchsucht

How Does the ~ Token in Go Generics Handle Underlying Types?

Verstehen des Tilde (~)-Tokens in Go Generics

Go hat das neue Token ~ eingeführt, das die Menge der Typen mit dem zugrunde liegenden Typ darstellt T.

Definition

Der ~T-Token bezeichnet ein Einschränkungselement, das den Satz von Typen angibt, deren zugrunde liegender Typ T ist.

Beispiel

Betrachten Sie das folgende Beispiel:

type Ordered interface {
    Integer | Float | ~string
}
Nach dem Login kopieren

In In diesem Beispiel bedeutet das ~string-Einschränkungselement, dass ein Typ einen zugrunde liegenden String-Typ haben muss, um die Ordered zu erfüllen Schnittstelle.

Zugrunde liegende Typen

Die Definition der zugrunde liegenden Typen ist entscheidend für das Verständnis des Verhaltens von ~T-Einschränkungselementen. Die Sprachspezifikation definiert zugrunde liegende Typen wie folgt:

  • Für vordeklarierte numerische, boolesche oder Zeichenfolgentypen oder Typliterale ist ihr zugrunde liegender Typ sie selbst.
  • Für andere Typen ihr zugrunde liegender Typ Typ ist der zugrunde liegende Typ des Typs, auf den sie in ihrer Typdeklaration verweisen.

Praktisch Implikationen

Die praktische Implikation des ~T-Tokens besteht darin, dass es die Verwendung Ihrer benutzerdefinierten Typen in Schnittstellen und Einschränkungen ermöglicht, selbst wenn diese Schnittstellen und Einschränkungen genaue Typen angeben. Betrachten Sie beispielsweise den folgenden Code:

type MyInt8 int8

// Cannot instantiate with MyInt8
func echoExact[T constraints.ExactSigned](t T) T { return t }

// Can instantiate with MyInt8
func echo[T constraints.Signed](t T) T { return t }
Nach dem Login kopieren

In diesem Beispiel lässt der Typ „constraints.ExactSigned“ keine benutzerdefinierten Typen zu, während der Typ „constraints.Signed“ dies aufgrund der Verwendung des Einschränkungselements ~T zulässt.

Fazit

Das ~T-Token bietet eine flexible Möglichkeit, Typeinschränkungen in Go-Generika anzugeben. Es ermöglicht die Verwendung benutzerdefinierter Typen, deren zugrunde liegende Typen der angegebenen Einschränkung entsprechen, wodurch die Ausdruckskraft und Benutzerfreundlichkeit von generischem Code verbessert wird.

Das obige ist der detaillierte Inhalt vonWie geht der ~-Token in Go Generics mit zugrunde liegenden Typen um?. 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