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!