Maison > développement back-end > Golang > Que font les déclarations de fonction Receiver in Go ?

Que font les déclarations de fonction Receiver in Go ?

DDD
Libérer: 2024-12-20 10:55:21
original
198 Les gens l'ont consulté

What Does the Receiver in Go Function Declarations Do?

Que contiennent les parenthèses dans les déclarations de fonction Go ?

Dans Go, vous pouvez rencontrer des déclarations de fonction avec une syntaxe comme celle-ci :

func (h handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    ...
}
Copier après la connexion
func (s *GracefulServer) BlockingClose() bool {
    ...
}
Copier après la connexion

Ce qu'il y a entre parenthèses, comme (h handler) et (s *GracefulServer), est connu sous le nom de « récepteur ». La façon dont cela fonctionne dans Go diffère des autres langages.

Le récepteur en tant que classe

Le type de récepteur, comme une classe en programmation orientée objet, représente l'entité sur quelles méthodes sont invoquées. Par exemple, si A est une méthode dans la classe Person, une instance de Person est requise pour appeler A.

Récepteur en tant que valeur ou pointeur

Dans les exemples ci-dessus, h est un type valeur tandis que s est un pointeur. Cette distinction affecte le fonctionnement de la méthode :

  • Type de valeur (par exemple, gestionnaire) : Les modifications apportées au récepteur au sein de la méthode n'affectent pas l'instance d'origine.
  • Type de pointeur (par exemple, *GracefulServer) : Les modifications apportées au récepteur persistent dans l'original exemple.

Quand utiliser les pointeurs

Utilisez des pointeurs comme récepteurs lorsque vous souhaitez modifier l'état du récepteur. Par exemple, si vous avez besoin de BlockingClose pour modifier l'état de GracefulServer, s *GracefulServer est nécessaire.

Référence des spécifications :

Pour plus de détails, reportez-vous au site officiel Go spécification : https://golang.org/ref/spec#Method_sets

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal