Avec le développement du cloud computing et du big data, de plus en plus de développeurs commencent à utiliser le langage Golang pour le développement. Golang est un langage open source qui présente les avantages d'une vitesse d'exécution rapide, d'une faible utilisation de la mémoire et de fortes capacités de concurrence. Ici, cet article présentera les caractéristiques de la méthode dans Golang.
La méthode dans Golang est une fonction spéciale, la fonction récepteur. La fonction récepteur peut être comprise comme une fonction basée sur un type de structure ou d'interface. La plus grande différence entre la fonction récepteur et les fonctions ordinaires est que la fonction récepteur a un paramètre récepteur comme contexte pour appeler la méthode. Le paramètre récepteur peut être un type valeur ou un type pointeur.
L'utilisation de la fonction récepteur peut dissocier le comportement des structures de données, rendant le code plus clair et plus facile à développer. Dans Golang, la fonction récepteur est définie comme suit :
func (r receiverType) functionName(parameters) { // function body }
Parmi eux, ReceiverType représente le type auquel appartient la fonction récepteur (peut être n'importe quel type, y compris les structures et les interfaces, etc.), functionName représente le nom de la fonction et les paramètres représente les paramètres de la fonction.
Parmi eux, il existe deux types de paramètres du récepteur :
Pour le fonction récepteur de type valeur, La valeur sera copiée lors de l'appel, c'est-à-dire qu'une copie des données sera copiée à chaque fois. Pour la fonction récepteur de type pointeur, les mêmes données seront partagées lors de l'appel.
Ce qui suit utilise des exemples pour présenter les caractéristiques de la fonction récepteur.
package main import "fmt" type Person struct { Name string Age int } func (p Person) SayHello() { fmt.Printf("Hello, my name is %s\n", p.Name) } func (p *Person) IncreaseAge() { p.Age++ } func main() { person := Person{ Name: "Jack", Age: 20, } person.SayHello() // Hello, my name is Jack person.IncreaseAge() fmt.Printf("The age of %s is %d\n", person.Name, person.Age) // The age of Jack is 21 }
Dans le code ci-dessus, nous définissons un type de personne, qui contient deux champs : Nom et Âge. Ensuite nous avons défini deux fonctions réceptrices, correspondant aux méthodes SayHello et IncreaseAge. Parmi eux, SayHello est une fonction réceptrice de type valeur et IncreaseAge est une fonction réceptrice de type pointeur.
Dans la fonction principale, nous créons un objet personne et appelons sa fonction SayHello. Puisque SayHello est une fonction réceptrice de type valeur, une copie de l’objet personne sera effectuée lors de son appel. Nous affichons le champ Nom de l'objet dans la fonction SayHello.
Ensuite, nous avons appelé la fonction IncreaseAge de la personne. Étant donné que IncreaseAge est une fonction réceptrice de type pointeur, le même objet personne est utilisé lors de son appel. Nous ajoutons 1 au champ Age de l'objet dans la fonction IncreaseAge et affichons les champs Nom et Age de l'objet dans la fonction principale.
À travers l'exemple ci-dessus, nous pouvons voir les caractéristiques de la fonction récepteur dans Golang :
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!