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.
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()
差异
特性 | 函数 | 方法 | |||
---|---|---|---|---|---|
定义 | 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 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. | Beispiel: | rrreee | |||
rrreee | Differenz |
Eigenschaften | Funktionen | Methoden th> th> |
---|
Definitionfunc
<receiver type> <method name>
Global, Paket privat
Typ privat
Empfängerparameter
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!