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

WBOY
Freigeben: 2024-04-25 12:51:02
Original
1106 Leute haben es durchsucht

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
}
Nach dem Login kopieren

调用函数:

result := sum(10, 20)
Nach dem Login kopieren

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

示例:

type Person struct {
    Name string
}

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

调用方法:

p := Person{"John"}
greeting := p.Greet()
Nach dem Login kopieren

差异

Beispiel: Beispiel: rrreeeAufrufmethode: rrreeeDifferenz
特性函数方法
定义func<receiver type> <method name>
func Avg(numbers []float64) float64 {
    sum := 0.0
    for _, num := range numbers {
        sum += num
    }
    return sum / float64(len(numbers))
}
Nach dem Login kopieren
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
}
Nach dem Login kopieren
Methoden
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

<receiver type> <method name>

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage