Maison  >  Article  >  développement back-end  >  Différences dans les fonctions de la méthode Golang

Différences dans les fonctions de la méthode Golang

王林
王林original
2023-05-10 12:16:37604parcourir

Dans le langage de programmation Go, nous utilisons souvent des méthodes et des fonctions pour effectuer des tâches et renvoyer des résultats. Bien qu’ils produisent tous deux les mêmes résultats, leurs rôles dans la programmation orientée objet sont différents. Dans cet article, nous analyserons la différence entre les méthodes et les fonctions dans Go.

Définition des méthodes et des fonctions

Dans Go, les définitions des fonctions et des méthodes sont similaires, mais leur syntaxe et leur utilisation sont différentes.

Dans Go, une fonction est un bloc indépendant de code de programme qui peut accepter des paramètres et renvoyer des résultats. Les fonctions peuvent être appelées n'importe où dans le programme et ne nécessitent pas de structures de données spécifiques. Voici un exemple de fonction simple :

func add(x int, y int) int {
    return x + y
}

Les méthodes sont des fonctions associées à une structure de données, elles ont un paramètre récepteur supplémentaire qui est d'un type spécifique qui est garanti comme étant de ce type. Effectuez des opérations sur les valeurs. Par exemple, le code suivant montre la définition de la méthode :

type person struct {
    name string
    age  int
}

func (p person) PrintName() {
    fmt.Println(p.name)
}

Dans le code ci-dessus, PrintName() est une méthode et elle est définie comme person Un récepteur pour la structure. Cela signifie que nous ne pouvons appeler cette méthode que dans un objet person. PrintName() 是一个方法,它被定义为 person 结构体的一个接收器。这意味着我们只能在 person 对象中调用该方法。

语法差异

函数的语法如下:

func functionName(parameterName type) returnType {
    // Function code goes here
}

而方法的语法如下:

func (receiverName ReceiverType) MethodName(parameterName type) returnType {
    // Method code goes here
}

在方法中,我们必须在函数名之前指定一个接收器(也称为对象或接口)。接收器可以是任何类型,包括自定义类型。如果接收器是指针,则方法可以修改它的值。

调用方式的不同

函数可以在程序的任何位置调用。例如,以下代码演示了在程序的不同位置执行一个函数:

func main() {
    fmt.Println(add(1, 2))
    fmt.Println(sayHello())
}

func add(x, y int) int {
    return x + y
}

func sayHello() string {
    return "Hello World!"
}

相反,方法只能与它们关联的对象一起调用。以下是一个简单的示例:

package main

import "fmt"

type person struct {
    name string
    age  int
}

func (p person) PrintName() {
    fmt.Println(p.name)
}

func main() {
    p := person{"John", 25}
    p.PrintName()
}

在上面的方法调用中,PrintName方法只能在 person

Différence de syntaxe

La syntaxe de la fonction est la suivante :

rrreee

Et la syntaxe de la méthode est la suivante :

rrreee

Dans la méthode , il faut spécifier un récepteur (également appelé objet ou interface) avant le nom de la fonction. Les récepteurs peuvent être de n’importe quel type, y compris les types personnalisés. Si le récepteur est un pointeur, la méthode peut modifier sa valeur.

Différences dans les méthodes d'appel

Les fonctions peuvent être appelées n'importe où dans le programme. Par exemple, le code suivant montre l'exécution d'une fonction à différents emplacements du programme : #🎜🎜#rrreee#🎜🎜#En revanche, les méthodes ne peuvent être appelées qu'avec l'objet auquel elles sont associées. Voici un exemple simple : #🎜🎜#rrreee#🎜🎜#Dans l'appel de méthode ci-dessus, la méthode PrintName ne peut être appelée que sur le type de structure person. #🎜🎜##🎜🎜#Héritage et polymorphisme#🎜🎜##🎜🎜#Les méthodes peuvent être héritées entre les structures et elles peuvent être remplacées pour obtenir le polymorphisme. En effet, les méthodes sont associées à des types spécifiques. Cet héritage et ce polymorphisme font de Go un puissant langage de programmation orienté objet. #🎜🎜##🎜🎜#En revanche, les fonctions ne peuvent pas être héritées et polymorphes. Parce qu’ils sont indépendants de tout type spécifique, contrairement aux méthodes, ils ne peuvent pas être remplacés pour obtenir un polymorphisme. #🎜🎜##🎜🎜#Résumé#🎜🎜##🎜🎜#Bien que les fonctions et les méthodes puissent toutes deux produire les mêmes résultats, elles diffèrent par leur utilisation et leur conception. Les méthodes ne peuvent être appelées qu’avec leurs types associés et présentent les caractéristiques d’héritage et de polymorphisme. En revanche, les fonctions sont appelées n'importe où dans le code et ne présentent pas les caractéristiques d'héritage et de polymorphisme. Par conséquent, lors de l’écriture du code, nous prenons en compte ces différences afin d’utiliser des méthodes ou des fonctions dans le bon contexte. #🎜🎜#

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