Heim >Backend-Entwicklung >Golang >Kann die auf Zeigertypen festgelegte Methode von Go mit regulären Typen aufgerufen werden?

Kann die auf Zeigertypen festgelegte Methode von Go mit regulären Typen aufgerufen werden?

Barbara Streisand
Barbara StreisandOriginal
2024-11-17 20:37:01654Durchsuche

Can Go's Method Set on Pointer Types Be Called with Regular Types?

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!

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