Explication détaillée de la différence entre la fonction (Function) et la méthode (Method) dans Golang

Dans Golang, tout le monde utilisera inévitablement des fonctions (Function) et des méthodes (Method) fréquemment, mais certains élèves n'ont peut-être pas remarqué les similitudes et les différences entre les fonctions et les méthodes. Les fonctions (Function) et les méthodes (Method) sont utilisées pour exécuter la tâche. des blocs de code spécifiques, bien que similaires, sont également assez différents. Cet article expliquera en détail la définition des fonctions et des méthodes ainsi que leurs similitudes et leurs différences.

Fonction

Une fonction est l'un des composants de base d'un programme Golang. Il s'agit d'un bloc de code indépendant qui peut être défini et appelé indépendamment. La définition d'une fonction commence par le mot-clé func, suivi du nom de la fonction, de la liste des paramètres, du type de valeur de retour et du corps de la fonction. Regardez un exemple de définition de fonction simple :

func add(a b int) int {
    return a + b
}

La méthode d'appel d'une fonction se fait via le nom de la fonction et la liste des paramètres. Par exemple:

result := add(2, 3)

Les autres caractéristiques et types de fonctions ne seront pas abordés, ce qui n'est pas l'objet de cet article. Cet article ne présente que brièvement la définition de base des fonctions, en se concentrant sur l'explication des similitudes et des différences entre les fonctions et les méthodes.

Méthode

Les méthodes sont des fonctions associées à un type particulier (type struct, type fonction, type interface, etc.). est défini en dehors de, mais étroitement associé à, la définition du type. La définition d'une méthode est similaire à une fonction, mais un récepteur (récepteur) est ajouté avant le nom de la fonction pour spécifier à quel type appartient la méthode. Voici un exemple de méthode simple :

type Rectangle struct {
    width  float64
    height float64
}

// 定义 Area 方法
func (r Rectangle) Area() float64 {
    return r.width * r.height
}

Définissez d'abord un type de structure nommé Rectangle, puis définissez une méthode nommée Area, qui accepte un récepteur de type Rectangle.

L'invocation d'une méthode est similaire à une fonction, mais elle doit d'abord instancier une instance du type de récepteur correspondant et l'exécuter en appelant cette instance. Par exemple:

rect := Rectangle{width: 3, height: 4}
area := rect.Area()

Ce code crée d'abord une instance du type Rectangle, puis appelle la méthode Area via cette instance.

On peut voir que la méthode est liée au type via le récepteur, de sorte que les champs et les méthodes du type récepteur sont accessibles à l'intérieur de la méthode. Les fonctions, en revanche, existent indépendamment et ne sont pas associées à un type spécifique.

résumé

Les fonctions et les méthodes sont des blocs de code utilisés pour effectuer des tâches spécifiques. Leur définition et leur utilisation sont très similaires, avec deux différences principales :

  • Les fonctions existent indépendamment, tandis que les méthodes sont associées à des types spécifiques ;
  • Les fonctions peuvent être appelées directement, tandis que les appels de méthode doivent passer l'instance de type récepteur correspondante.

Guess you like

Origin blog.csdn.net/luduoyuan/article/details/131495007