Maison >développement back-end >Golang >Que signifie la notation \'(v Version)\' après un nom de fonction dans Go ?

Que signifie la notation \'(v Version)\' après un nom de fonction dans Go ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-30 00:59:02732parcourir

What Does the

Parenthèses de fonction dans Go : comprendre la notation (version v)

En tant que nouveau venu sur Go, vous avez peut-être rencontré du code où les parenthèses suivent immédiatement après un nom de fonction. Cela peut prêter à confusion, surtout lorsque vous essayez de faire la différence entre les fonctions et les méthodes.

Dans Go, les parenthèses après le nom d'une fonction indiquent que la fonction est en fait une méthode. Voyons ce que cela signifie :

Méthode : une fonction attachée à un type

Une méthode est une fonction qui opère sur un type de données spécifique. Dans l'exemple que vous avez fourni :

func (v Version) MarshalJSON() ([]byte, error) {
  return json.Marshal(v.String())
}

Le (v Version) avant la fonction MarshalJSON indique qu'il s'agit d'une méthode attachée au type Version. Le v représente le récepteur de la méthode, qui dans ce cas est une valeur de type Version.

Fonction vs méthode : différences et utilisation

Fonctions en Go fonctionnent de manière indépendante et peuvent être appelés sans contexte spécifique. Les méthodes, en revanche, sont liées au type de données pour lequel elles sont définies et ne peuvent être appelées que sur des instances de ce type.

Par exemple, ce qui suit est une fonction qui calcule l'aire d'un rectangle. :

func RectangleArea(length float64, width float64) float64 {
  return length * width
}

Vous pouvez appeler cette fonction comme suit :

area := RectangleArea(5.0, 10.0)

Cependant, si vous avez un type Rectangle avec des champs pour la longueur et la largeur, vous pouvez définir une méthode dessus pour calculer l'aire :

type Rectangle struct {
  Length float64
  Width float64
}

func (r *Rectangle) Area() float64 {
  return r.Length * r.Width
}

Maintenant, vous pouvez appeler la méthode Area sur n'importe quelle instance de Rectangle, comme ceci :

rectangle := Rectangle{5.0, 10.0}
area := rectangle.Area()

En comprenant la différence entre les fonctions et les méthodes, vous pouvez efficacement utilisez des parenthèses après les noms de fonctions pour créer et utiliser des méthodes dans Go.

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