Heim > Backend-Entwicklung > Golang > Was macht der Empfänger in Go-Funktionsdeklarationen?

Was macht der Empfänger in Go-Funktionsdeklarationen?

DDD
Freigeben: 2024-12-20 10:55:21
Original
198 Leute haben es durchsucht

What Does the Receiver in Go Function Declarations Do?

Was steht in den Klammern in Go-Funktionsdeklarationen?

In Go stoßen Sie möglicherweise auf Funktionsdeklarationen mit einer Syntax wie dieser:

func (h handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    ...
}
Nach dem Login kopieren
func (s *GracefulServer) BlockingClose() bool {
    ...
}
Nach dem Login kopieren

Was in den Klammern steht, wie zum Beispiel (h handler) und (s *GracefulServer) wird als „Empfänger“ bezeichnet. Die Funktionsweise in Go unterscheidet sich von anderen Sprachen.

Der Empfänger als Klasse

Der Empfängertyp repräsentiert wie eine Klasse in der objektorientierten Programmierung die Entität welche Methoden aufgerufen werden. Wenn A beispielsweise eine Methode innerhalb der Klasse Person ist, ist eine Instanz von Person erforderlich, um A aufzurufen.

Empfänger als Wert oder Zeiger

In den obigen Beispielen h ist ein Werttyp, während s ein Zeiger ist. Diese Unterscheidung wirkt sich auf die Funktionsweise der Methode aus:

  • Werttyp (z. B. Handler):Änderungen am Empfänger innerhalb der Methode haben keinen Einfluss auf die ursprüngliche Instanz.
  • Zeigertyp (z. B. *GracefulServer): Am Empfänger vorgenommene Änderungen bleiben im Original erhalten Beispiel.

Wann Zeiger verwendet werden sollten

Verwenden Sie Zeiger als Empfänger, wenn Sie den Zustand des Empfängers ändern möchten. Wenn Sie beispielsweise BlockingClose benötigen, um den Status von GracefulServer zu ändern, ist s *GracefulServer erforderlich.

Spezifikationsreferenz:

Weitere Einzelheiten finden Sie im offiziellen Go Spezifikation: https://golang.org/ref/spec#Method_sets

Das obige ist der detaillierte Inhalt vonWas macht der Empfänger in Go-Funktionsdeklarationen?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage