Heim  >  Artikel  >  Backend-Entwicklung  >  Warum kann ich Schnittstellentypbeschränkungen nicht verwenden, um ein Slice in Go zu initialisieren?

Warum kann ich Schnittstellentypbeschränkungen nicht verwenden, um ein Slice in Go zu initialisieren?

DDD
DDDOriginal
2024-11-06 20:14:02297Durchsuche

Why Can't I Use Interface Type Constraints to Initialize a Slice in Go?

Schnittstellentypbeschränkungen: Den Fehler „Typbeschränkungen“ verstehen

In Go können Schnittstellen als Typbeschränkungen dienen, um die Typen einzuschränken, die erfüllt werden können ihnen. Bestimmte Schnittstellen, einschließlich solcher, die Typeinschränkungen enthalten, unterliegen jedoch Einschränkungen in der Verwendung.

Grundlegendes zu Typeinschränkungen

Typeinschränkungen beziehen sich auf Schnittstellen, die Typelemente wie Unions enthalten oder eingebettete Typen, die vergleichbar sind. Diese Schnittstellen gelten als nicht grundlegend und können nicht als tatsächliche Typen für Werte oder Variablen oder als Teil von Nicht-Schnittstellentypen verwendet werden.

Beispiel:

Bedenken Sie Folgendes Schnittstelle mit einer Typeinschränkung:

type Number interface {
    int | int64 | float64
}

Einschränkung bei der Slice-Initialisierung

Eine Schnittstelle mit Typeinschränkungen, wie z. B. Number, kann nicht zum direkten Initialisieren eines Slice verwendet werden. Beispielsweise würde die folgende Zeile einen Fehler auslösen:

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

Fehlerursache

Der Fehler „Schnittstelle enthält Typbeschränkungen: Schnittstelle kann bei der Konvertierung nicht verwendet werden“ entsteht aus der nicht-grundlegenden Natur der Zahlenschnittstelle. Schnittstellen mit Typeinschränkungen können nur in zwei spezifischen Szenarien verwendet werden:

  1. Als Typparametereinschränkungen für generische Typen und Funktionen.
  2. Als Elemente anderer Schnittstellen, die ebenfalls als Einschränkungen verwendet werden.

Beispiel für zulässige Verwendung

Anstatt einen Zahlenabschnitt direkt zu initialisieren, können wir die folgende Typparameterbeschränkung verwenden:

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

Fazit

Schnittstellen mit Typeinschränkungen erfüllen in Go einen bestimmten Zweck. Um Fehler zu vermeiden und das korrekte Verhalten des Programms sicherzustellen, ist es von entscheidender Bedeutung, deren Einschränkungen und die entsprechende Verwendung zu verstehen.

Das obige ist der detaillierte Inhalt vonWarum kann ich Schnittstellentypbeschränkungen nicht verwenden, um ein Slice in Go zu initialisieren?. 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