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) { ... }
func (s *GracefulServer) BlockingClose() bool { ... }
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 :
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!