Heim  >  Artikel  >  Backend-Entwicklung  >  Warum kann ich bei einer Konvertierung keine Go-Schnittstelle mit Typeinschränkungen verwenden?

Warum kann ich bei einer Konvertierung keine Go-Schnittstelle mit Typeinschränkungen verwenden?

Susan Sarandon
Susan SarandonOriginal
2024-11-07 03:36:03182Durchsuche

Why Can't I Use a Go Interface with Type Constraints in a Conversion?

Typbeschränkungen in Go-Schnittstellen verstehen

Go-Schnittstellen sind leistungsstarke Tools zum Abstrahieren von Datentypen und zur Förderung der Wiederverwendung von Code. Die Verwendung von Schnittstellen wird jedoch durch bestimmte Regeln eingeschränkt, darunter das Verbot von Schnittstellen, die Typelemente enthalten.

Im angegebenen Codeausschnitt wird der Fehler „Schnittstelle enthält Typeinschränkungen: Schnittstellennummer kann bei der Konvertierung nicht verwendet werden“ angezeigt „ entsteht aufgrund dieser Einschränkung. Die Number-Schnittstelle, definiert als Typ Number interface { int | int64 | float64} definiert eine Vereinigung von drei spezifischen Typen. Dies macht Number zu einer nicht-basischen Schnittstelle, was bedeutet, dass sie nicht als Typ eines Werts oder einer Variablen verwendet werden kann.

Die Sprachspezifikation verbietet die Verwendung von nicht-basischen Schnittstellen bei Typkonvertierungen oder als Elemente anderer Typen. Die Variable a kann nicht als []Number{Number(1), Number(2), Number(3), Number(4)} initialisiert werden, da Number nicht zum Erstellen eines neuen Werts verwendet werden kann.

Zu überwinden Um diese Einschränkung zu umgehen, können Sie den Typ interface{} verwenden, der Werte jeden Typs enthalten kann. Die aa-Variable wurde erfolgreich als []interface{}{interface{}(1), interface{}(2), interface{}(3), 4} erstellt, da die Elemente nicht durch die Typbeschränkungen von Number.

Alternativ können Sie eine Schnittstelle ohne Typbeschränkungen definieren, z. B. NNumber, und diese zum Erstellen typsicherer Slices verwenden. Die aaa-Variable wird ohne Fehler als []NNumber{NNumber(1), NNumber(2), NNumber(3), 4} initialisiert, da NNumber keine Typbeschränkungen enthält.

Durch das Verständnis der Konzepte von Basic und Wenn Sie nicht grundlegende Schnittstellen und die damit verbundenen Einschränkungen berücksichtigen, können Sie Go-Schnittstellen effektiv nutzen und gleichzeitig potenzielle Probleme im Zusammenhang mit Typbeschränkungen vermeiden.

Das obige ist der detaillierte Inhalt vonWarum kann ich bei einer Konvertierung keine Go-Schnittstelle mit Typeinschränkungen verwenden?. 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