„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Warum kann ich Schnittstellen mit Typeinschränkungen nicht direkt in Go verwenden?

Warum kann ich Schnittstellen mit Typeinschränkungen nicht direkt in Go verwenden?

Veröffentlicht am 19.11.2024
Durchsuche:881

Why Can't I Use Interfaces with Type Constraints Directly in Go?

Schnittstellentyp-Einschränkungen

Bei der Entwicklung einer Go-Anwendung ist es wichtig, die Einschränkungen zu verstehen, die durch Schnittstellentyp-Einschränkungen entstehen. Schnittstellentypen mit Typelementen, wie z. B. Unions, sind in ihrer Verwendung eingeschränkt. Dieser Artikel befasst sich mit den Besonderheiten von Schnittstellentypbeschränkungen und stellt Beispiele zur Veranschaulichung ihrer Auswirkungen bereit.

Definieren von Schnittstellen mit Typbeschränkungen

In Go werden Schnittstellen berücksichtigt, die Typelemente wie Unions enthalten nicht grundlegend. Dies bedeutet, dass sie nicht als Typ von Variablen verwendet werden oder Komponenten anderer Nicht-Schnittstellentypen sein können. Beispielsweise ist die folgende Zahlenschnittstelle nicht einfach, da sie eine Union enthält:

type Number interface {
    int | int64 | float64
}

Der Fehler: „Schnittstelle enthält Typbeschränkungen“

Beim Versuch, ein Segment der Zahlenschnittstelle wie folgt zu initialisieren:

a := []Number{Number(1), Number(2), Number(3), Number(4)}

Go löst den Fehler „Schnittstelle enthält Typbeschränkungen“ aus, da die Number-Schnittstelle nicht bei der Typkonvertierung verwendet werden kann (wie in Number( zu sehen) 1)).

Typeinschränkungen verstehen

Gemäß der Go-Sprachspezifikation können Schnittstellen, die nicht grundlegend sind, nur als Typeinschränkungen oder als Elemente anderer Schnittstellen verwendet werden, die als Einschränkungen verwendet werden. Sie können keine Werte- oder Variablentypen sein. Dies liegt daran, dass das Vorhandensein von Typelementen in einer Schnittstelle diese nicht grundlegend macht und mit der direkten Instanziierung inkompatibel ist.

Beispiel: Verwendung von nicht-grundlegenden Schnittstellen

Während nicht-grundlegende Schnittstellen nicht verwendet werden können Direkt als Typen können sie als Typeinschränkungen verwendet werden. Betrachten Sie beispielsweise die folgende Coordinates-Struktur, die einen generischen Typparameter T verwendet, der durch die Number-Schnittstelle eingeschränkt wird:

type Coordinates[T Number] struct {
    x, y T
}

In diesem Szenario kann die Coordinates-Struktur nur mit Typen instanziiert werden, die die Einschränkungen der Number-Schnittstelle erfüllen.

Schlussfolgerung

Schnittstellentypen mit Typeinschränkungen spielen eine entscheidende Rolle Gewährleistung der Typsicherheit in Go-Anwendungen. Durch das Verständnis der Einschränkungen nicht grundlegender Schnittstellen und deren korrekte Verwendung innerhalb von Typbeschränkungen können Entwickler robusten und effizienten Code erstellen.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3