Maison  >  Article  >  développement back-end  >  Quelle est la différence entre les fonctions et les méthodes Golang ?

Quelle est la différence entre les fonctions et les méthodes Golang ?

WBOY
WBOYoriginal
2024-04-25 12:51:021064parcourir

Les fonctions et les méthodes sont deux manières de définir des blocs de code dans Go. La portée de la fonction est globale ou privée du package, et la portée de la méthode est de type privé. Les fonctions n'ont pas de paramètres de récepteur, alors que les méthodes ont des paramètres de récepteur qui donnent accès aux membres du type. Le cas pratique montre la fonction de calcul de moyenne sans utiliser de structure, et la méthode de calcul de moyenne pondérée avec une structure.

golang 函数与方法的区别是?

La différence entre les fonctions et les méthodes dans Go

Introduction
Dans le langage Go, les fonctions et les méthodes sont deux manières de définir des blocs de code. Bien qu’il existe de nombreuses similitudes, ils présentent également des différences fondamentales. Cet article plongera dans les différences entre les fonctions et les méthodes dans Go et fournira des exemples pratiques.

Fonction
Une fonction est un bloc de code indépendant du type qui effectue une opération sur une entrée et renvoie une sortie. Les fonctions sont définies à l'aide du mot-clé func, suivi du nom de la fonction, de la liste des paramètres et du type de valeur de retour. func 关键字定义,后面跟着函数名、参数列表和返回值类型。

示例:

func sum(a, b int) int {
    return a + b
}

调用函数:

result := sum(10, 20)

方法
方法是附加到类型上的函数。它允许该类型的实例访问和操作该方法的实现。方法使用接收器参数定义,后面跟着方法名、参数列表和返回值类型。

示例:

type Person struct {
    Name string
}

func (p Person) Greet() string {
    return "Hello, " + p.Name + "!"
}

调用方法:

p := Person{"John"}
greeting := p.Greet()

差异

Exemple : Méthodes Exemple : rrreeeMéthode d'appel : rrreeeDifférence
特性 函数 方法
定义 func afbca75a3c4bea07d39946edd0d57a61 a4e733488ff4d79deacc65b80d12a259
func Avg(numbers []float64) float64 {
    sum := 0.0
    for _, num := range numbers {
        sum += num
    }
    return sum / float64(len(numbers))
}
Appel d'une fonction :
type WeightedAvg struct {
    Numbers []float64
    Weights []float64
}

func (w WeightedAvg) Avg() float64 {
    weightedSum := 0.0
    for i := range w.Numbers {
        weightedSum += w.Numbers[i] * w.Weights[i]
    }
    totalWeight := 0.0
    for _, w := range w.Weights {
        totalWeight += w
    }
    return weightedSum / totalWeight
}
Les méthodes sont des fonctions attachées à un type. Il permet aux instances du type d'accéder et de manipuler l'implémentation de la méthode. Les méthodes sont définies à l'aide des paramètres du récepteur, suivis du nom de la méthode, de la liste des paramètres et du type de valeur de retour.
Caractéristiques Fonctions Méthodes th> th>

Définitionfunc

d1442230122e8d5891efeca1092d1f6f c688e9ba4690ed778190bcf564def987

Portée

Global, package privé
type privé

paramètres du récepteur

aucun 🎜🎜 oui 🎜🎜🎜🎜 membres de type accès 🎜🎜 non 🎜🎜 oui 🎜🎜🎜🎜🎜 🎜 cas réel 🎜 🎜🎜🎜Calculer la moyenne🎜 🎜 Sans utiliser de structure, vous pouvez écrire une fonction pour calculer la moyenne d'un tableau de nombres à virgule flottante : 🎜rrreee🎜🎜Calculer la moyenne avec des poids🎜🎜Si vous devez calculer la moyenne en fonction des poids, vous pouvez utiliser une méthode : 🎜rrreee 🎜🎜Conclusion🎜🎜Les fonctions et méthodes jouent différents rôles dans le langage Go. Les fonctions sont des blocs de code indépendants du type qui effectuent des tâches courantes. Les méthodes sont des fonctions attachées à un type qui sont utilisées pour manipuler et accéder aux instances de ce type. Comprendre la différence entre les fonctions et les méthodes est essentiel pour écrire du code Go clair et maintenable. 🎜

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