Go-Methodensätze: Können Sie Methoden von Zeigertypen für reguläre Typen aufrufen?
Die Go-Spezifikation definiert den Methodensatz eines Typs als alle Methoden mit einem Empfängertyp, der diesem Typ entspricht. Es heißt jedoch auch, dass der Methodensatz eines Zeigertyps (*T) sowohl seine eigenen Methoden als auch die Methoden seines entsprechenden Nicht-Zeigertyps (T) umfasst. Dies wirft die Frage auf: Können Sie Methoden von Zeigertypen auf reguläre Typen aufrufen?
Trotz des Wortlauts der Spezifikation lautet die Antwort Nein. Sie können eine Methode, die für den Aufruf auf einen Zeigertyp (*T) konzipiert ist, nicht direkt mit einem regulären Typ (T) aufrufen. Dies liegt daran, dass Methodenaufrufe genau zum Empfängertyp passen müssen.
Der Compiler bietet jedoch einen cleveren Workaround. Es dereferenziert automatisch Empfänger vom regulären Typ und ruft stattdessen die Zeigertypmethode auf. Dies entspricht der manuellen Dereferenzierung des Empfängers und dem expliziten Aufruf der Zeigertypmethode: user.SayWat() wird zu (&user).SayWat().
Das obige ist der detaillierte Inhalt vonKann die auf Zeigertypen festgelegte Methode von Go mit regulären Typen aufgerufen werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!