Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist der Unterschied zwischen Golang-Funktionen und -Methoden?

Was ist der Unterschied zwischen Golang-Funktionen und -Methoden?

WBOY
WBOYOriginal
2024-04-25 12:51:021102Durchsuche

Funktionen und Methoden sind zwei Möglichkeiten, Codeblöcke in Go zu definieren. Der Funktionsumfang ist global oder paketprivat, der Methodenumfang ist vom Typ privat. Funktionen haben keine Empfängerparameter, während Methoden Empfängerparameter haben, die Zugriff auf Typmitglieder ermöglichen. Der praktische Fall zeigt die Durchschnittsberechnungsfunktion ohne Verwendung einer Struktur und die gewichtete Durchschnittsberechnungsmethode unter Verwendung einer Struktur.

golang 函数与方法的区别是?

Der Unterschied zwischen Funktionen und Methoden in Go

Einführung
In der Go-Sprache sind Funktionen und Methoden zwei Möglichkeiten, Codeblöcke zu definieren. Obwohl es viele Gemeinsamkeiten gibt, gibt es auch grundlegende Unterschiede. Dieser Artikel befasst sich mit den Unterschieden zwischen Funktionen und Methoden in Go und bietet praktische Beispiele.

Funktion
Eine Funktion ist ein typunabhängiger Codeblock, der eine Operation an einer Eingabe ausführt und eine Ausgabe zurückgibt. Funktionen werden mit dem Schlüsselwort func definiert, gefolgt vom Funktionsnamen, der Parameterliste und dem Rückgabewerttyp. 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()

差异

Beispiel: Methoden Beispiel: rrreeeAufrufmethode: rrreeeDifferenz
特性 函数 方法
定义 func afbca75a3c4bea07d39946edd0d57a61 a4e733488ff4d79deacc65b80d12a259
func Avg(numbers []float64) float64 {
    sum := 0.0
    for _, num := range numbers {
        sum += num
    }
    return sum / float64(len(numbers))
}
Aufruf einer Funktion:
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
}
Methoden sind Funktionen, die an einen Typ angehängt sind. Es ermöglicht Instanzen des Typs, auf die Implementierung der Methode zuzugreifen und diese zu manipulieren. Methoden werden mithilfe von Empfängerparametern definiert, gefolgt vom Methodennamen, der Parameterliste und dem Rückgabewerttyp.
Eigenschaften Funktionen Methoden th> th>

Definitionfunc

afbca75a3c4bea07d39946edd0d57a61 a4e733488ff4d79deacc65b80d12a259

Scope

Global, Paket privat
Typ privat

Empfängerparameter

keine 🎜🎜 ja 🎜🎜🎜🎜 Zugriffstypmitglieder 🎜🎜 nein 🎜🎜 ja 🎜🎜🎜🎜🎜 🎜 tatsächlicher Fall 🎜 🎜🎜🎜Durchschnitt berechnen🎜 🎜 Ohne eine Struktur zu verwenden, können Sie eine Funktion schreiben, um den Durchschnitt eines Arrays von Gleitkommazahlen zu berechnen: 🎜rrreee🎜🎜Berechnen Sie den Durchschnitt mit Gewichtungen🎜🎜Wenn Sie den Durchschnitt basierend auf Gewichten berechnen müssen, können Sie eine Methode verwenden: 🎜rrreee 🎜🎜Fazit🎜🎜Funktionen und Methoden spielen in der Go-Sprache unterschiedliche Rollen. Funktionen sind typunabhängige Codeblöcke, die allgemeine Aufgaben ausführen. Methoden sind an einen Typ angehängte Funktionen, mit denen Instanzen dieses Typs bearbeitet und darauf zugegriffen werden kann. Um klaren, wartbaren Go-Code zu schreiben, ist es wichtig, den Unterschied zwischen Funktionen und Methoden zu verstehen. 🎜

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Golang-Funktionen und -Methoden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn