Dans GO, une méthode est une fonction avec un argument de récepteur spécial. Le récepteur apparaît dans sa propre liste d'arguments entre le mot-clé func
et le nom de la méthode. Les méthodes sont associées à un type et peuvent être utilisées pour effectuer des opérations sur les valeurs de ce type. Ce concept est similaire à la programmation orientée objet où les méthodes sont essentiellement des fonctions appartenant à une classe ou à un objet. Cependant, GO n'a pas de classes, donc les méthodes sont jointes directement aux types.
Les méthodes vous permettent de définir des comportements qui peuvent être effectués sur des cas de type. Par exemple, vous pouvez définir une méthode pour mettre à jour un champ d'une structure ou pour effectuer un calcul en fonction des champs de la structure. Cela rend votre code plus lisible et organisé, car les fonctionnalités connexes sont regroupées avec les données sur lesquelles il fonctionne.
Pour définir une méthode en Go, vous utilisez la syntaxe suivante:
<code class="go">func (receiver ReceiverType) MethodName(parameters) returnType { // Method body }</code>
Voici une ventilation des composants:
func
est le mot-clé pour démarrer une déclaration de fonction ou de méthode.(receiver ReceiverType)
Spécifie le récepteur. ReceiverType
peut être une structure ou tout autre type, et receiver
est le nom que vous donnez au paramètre du récepteur dans la méthode.MethodName
est le nom de la méthode.parameters
sont les paramètres que prend la méthode, similaire à une fonction.returnType
est le type de la valeur renvoyée par la méthode, le cas échéant. Par exemple, si vous avez une structure Person
et que vous souhaitez définir une méthode pour définir l'âge de la personne, vous pouvez le faire comme ceci:
<code class="go">type Person struct { Name string Age int } func (p *Person) SetAge(newAge int) { p.Age = newAge }</code>
Dans cet exemple, SetAge
est une méthode sur le type Person
, et il modifie le champ Age
de l'instance Person
.
La principale différence entre une méthode et une fonction dans GO est qu'une méthode a un argument récepteur, contrairement à une fonction. Cet argument récepteur permet à la méthode d'être associée à un type spécifique, ce qui rend la méthode appelée sur les instances de ce type.
Voici les principales différences:
person.SetAge(30)
). Les fonctions sont appelées directement (par exemple, SetAge(person, 30)
).instance.Method()
) est différente de l'appel d'une fonction ( Function(instance)
).En Go, les méthodes peuvent être associées à presque tous les types, mais il y a certaines restrictions:
Types de base : vous pouvez définir des méthodes sur des types de base comme int
, float64
, string
, etc., mais vous devez d'abord définir un nouveau type en fonction de ces types de base. Par exemple:
<code class="go">type MyInt int func (m MyInt) Double() int { return int(m * 2) }</code>
Structs : Les méthodes peuvent être directement associées aux structures, qui est le cas d'utilisation le plus courant.
<code class="go">type Rectangle struct { width, height float64 } func (r Rectangle) Area() float64 { return r.width * r.height }</code>
Tableaux et tranches : vous ne pouvez pas associer directement à des méthodes avec des tableaux ou des tranches, mais vous pouvez créer un type qui enveloppe un tableau ou une tranche, puis associer des méthodes à ce type.
<code class="go">type IntSlice []int func (s IntSlice) Sum() int { sum := 0 for _, v := range s { sum = v } return sum }</code>
Pointeurs : Vous pouvez définir des méthodes sur les types de pointeurs, ce qui est souvent utile pour modifier l'état du récepteur.
<code class="go">type Counter int func (c *Counter) Increment() { *c }</code>
En résumé, bien que vous puissiez associer des méthodes à un large éventail de types en Go, vous devez généralement définir un nouveau type si vous souhaitez utiliser des méthodes avec des types de base ou des tableaux / tranches.
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!