Heim > Backend-Entwicklung > Golang > Warum schlägt die Typzusicherung beim Umwandeln in einen Typalias in Go fehl?

Warum schlägt die Typzusicherung beim Umwandeln in einen Typalias in Go fehl?

Barbara Streisand
Freigeben: 2024-12-22 18:35:11
Original
656 Leute haben es durchsucht

Why Does Type Assertion Fail When Casting to a Type Alias in Go?

Umwandlung in Typ-Aliase in Go

Problem:

Im Beispiel-Snippet ist das Die erste Typzusicherung gelingt durch explizite Angabe der Funktionssignatur. Die zweite Behauptung, die versucht, sie in den Typalias „somethingFuncy“ umzuwandeln, gerät jedoch in Panik. Warum ist das so und gibt es eine Möglichkeit, in eine längere Funktionssignatur umzuwandeln?

Erklärung:

Entgegen der falschen Vorstellung, dass es sich hier um Typumwandlung handelt, Go bietet nur Typzusicherungen und Typkonvertierungen an. Der Schwerpunkt liegt auf Typzusicherungen, die im bereitgestellten Snippet verwendet werden.

Ein wesentlicher Unterschied zwischen Typzusicherungen und Konvertierungen liegt in den zum Vergleich verwendeten Kriterien. Bei Konvertierungen, wie dem Beispiel mit int und MyInt, werden die zugrunde liegenden Typen berücksichtigt. Bei Typzusicherungen wird jedoch nur der genaue Typ berücksichtigt.

Zur Erläuterung: In dem Beispiel, in dem a vom Typ int ist, schlägt die Zusicherung a.(MyInt) fehl, weil int nicht mit MyInt identisch ist. obwohl beide denselben zugrunde liegenden Typ haben.

tl;dr:

Typzusicherungen prüfen den genauen Typ Identität, was bedeutet, dass sich ein Typalias wie SomethingFuncy von func(int) bool unterscheidet. Somit schlägt die zweite Umwandlung fehl.

Bonus:

Der Code, der zur Überprüfung der Typidentität im Snippet verwendet wird, dient als Referenz und zeigt den direkten Vergleich, der in der Behauptung enthalten ist Prozess.

Das obige ist der detaillierte Inhalt vonWarum schlägt die Typzusicherung beim Umwandeln in einen Typalias in Go fehl?. 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