Maison >développement back-end >Golang >Récepteur vs paramètre dans les méthodes Go : quelle est la vraie différence ?

Récepteur vs paramètre dans les méthodes Go : quelle est la vraie différence ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-28 07:59:10291parcourir

Receiver vs. Parameter in Go Methods: What's the Real Difference?

Récepteur vs paramètre dans les méthodes Go

Dans Go, comprendre le concept de récepteurs et de paramètres est crucial lorsque l'on travaille avec des méthodes.

Les signatures de méthode incluent souvent un paramètre déclaré comme récepteur de la méthode. Ce récepteur est un cas particulier de paramètre, malgré son nom.

Qu'est-ce qu'un récepteur ?

Le récepteur est une fonctionnalité de syntaxe qui permet d'associer des méthodes à types spécifiques. Dans l'exemple donné :

func (p *Page) save() error

La p *Page est le récepteur, indiquant que la méthode de sauvegarde est attachée au *Type de page.

Différence entre le récepteur et le paramètre

Le récepteur n'est pas un paramètre traditionnel dans le sens où il n'a pas besoin d'être explicitement transmis à la méthode. Au lieu de cela, le destinataire est automatiquement fourni par l'appelant.

Par exemple, pour appeler la méthode save, vous écririez :

p := &Page{"My Page", "This is my page"}
p.save()

Dans ce cas, la variable p *Page est la récepteur pour la méthode de sauvegarde.

Syntactic Sugar

L'utilisation d'un récepteur est simplement syntaxique sucre. Il permet d'attacher des méthodes aux types de manière pratique. Cependant, vous pouvez obtenir le même résultat en déclarant le récepteur comme paramètre régulier :

func save(p *Page) error

Les deux déclarations sont équivalentes et produiront le même résultat.

Pour plus de précisions, reportez-vous au a fourni une réponse pour des explications supplémentaires.

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!

Déclaration:
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