Maison > développement back-end > Golang > le corps du texte

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

WBOY
Libérer: 2024-04-25 12:51:02
original
1107 Les gens l'ont consulté

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
}
Copier après la connexion

调用函数:

result := sum(10, 20)
Copier après la connexion

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

示例:

type Person struct {
    Name string
}

func (p Person) Greet() string {
    return "Hello, " + p.Name + "!"
}
Copier après la connexion

调用方法:

p := Person{"John"}
greeting := p.Greet()
Copier après la connexion

差异

Exemple : Exemple : rrreeeMéthode d'appel : rrreeeDifférence
特性函数方法
定义func<receiver type> <method name>
func Avg(numbers []float64) float64 {
    sum := 0.0
    for _, num := range numbers {
        sum += num
    }
    return sum / float64(len(numbers))
}
Copier après la connexion
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
}
Copier après la connexion
Méthodes
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

<type de récepteur> <nom de la méthode>

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal