Heim  >  Artikel  >  Backend-Entwicklung  >  Unterschiede in den Funktionen der Golang-Methode

Unterschiede in den Funktionen der Golang-Methode

王林
王林Original
2023-05-10 12:16:37487Durchsuche

In der Programmiersprache Go verwenden wir häufig Methoden und Funktionen, um Aufgaben auszuführen und Ergebnisse zurückzugeben. Obwohl beide die gleichen Ergebnisse liefern, sind ihre Rollen in der objektorientierten Programmierung unterschiedlich. In diesem Artikel analysieren wir den Unterschied zwischen Methoden und Funktionen in Go.

Definition von Methoden und Funktionen

In Go sind die Definitionen von Funktionen und Methoden ähnlich, aber ihre Syntax und Verwendung sind unterschiedlich.

In Go ist eine Funktion ein unabhängiger Programmcodeblock, der Parameter akzeptieren und Ergebnisse zurückgeben kann. Funktionen können überall im Programm aufgerufen werden und erfordern keine spezifischen Datenstrukturen. Hier ist ein einfaches Funktionsbeispiel:

func add(x int, y int) int {
    return x + y
}

Methoden sind Funktionen, die einer Datenstruktur zugeordnet sind. Sie verfügen über einen zusätzlichen Empfängerparameter, der von einem bestimmten Typ ist und garantiert eine Operation für einen Wert dieses Typs ausführt. Der folgende Code zeigt beispielsweise die Methodendefinition:

type person struct {
    name string
    age  int
}

func (p person) PrintName() {
    fmt.Println(p.name)
}

Im obigen Code ist PrintName() eine Methode, die als Empfänger der Struktur person definiert ist. Das bedeutet, dass wir diese Methode nur in einem person-Objekt aufrufen können. PrintName() 是一个方法,它被定义为 person 结构体的一个接收器。这意味着我们只能在 person 对象中调用该方法。

语法差异

函数的语法如下:

func functionName(parameterName type) returnType {
    // Function code goes here
}

而方法的语法如下:

func (receiverName ReceiverType) MethodName(parameterName type) returnType {
    // Method code goes here
}

在方法中,我们必须在函数名之前指定一个接收器(也称为对象或接口)。接收器可以是任何类型,包括自定义类型。如果接收器是指针,则方法可以修改它的值。

调用方式的不同

函数可以在程序的任何位置调用。例如,以下代码演示了在程序的不同位置执行一个函数:

func main() {
    fmt.Println(add(1, 2))
    fmt.Println(sayHello())
}

func add(x, y int) int {
    return x + y
}

func sayHello() string {
    return "Hello World!"
}

相反,方法只能与它们关联的对象一起调用。以下是一个简单的示例:

package main

import "fmt"

type person struct {
    name string
    age  int
}

func (p person) PrintName() {
    fmt.Println(p.name)
}

func main() {
    p := person{"John", 25}
    p.PrintName()
}

在上面的方法调用中,PrintName方法只能在 person

Syntaxunterschiede

Die Syntax einer Funktion lautet wie folgt:

rrreee

, während die Syntax einer Methode wie folgt lautet:

rrreee

In einer Methode müssen wir einen Empfänger angeben (auch als Objekt oder Schnittstelle bezeichnet). vor dem Funktionsnamen. Empfänger können von jedem Typ sein, einschließlich benutzerdefinierter Typen. Wenn der Empfänger ein Zeiger ist, kann die Methode seinen Wert ändern.

Unterschiede bei den Aufrufmethoden

Funktionen können überall im Programm aufgerufen werden. Der folgende Code demonstriert beispielsweise die Ausführung einer Funktion an verschiedenen Stellen im Programm: 🎜rrreee🎜Im Gegensatz dazu können Methoden nur mit dem Objekt aufgerufen werden, dem sie zugeordnet sind. Hier ist ein einfaches Beispiel: 🎜rrreee🎜Im obigen Methodenaufruf kann die PrintName-Methode nur für den Strukturtyp person aufgerufen werden. 🎜🎜Vererbung und Polymorphismus🎜🎜Methoden können zwischen Strukturen vererbt und überschrieben werden, um Polymorphismus zu implementieren. Dies liegt daran, dass Methoden bestimmten Typen zugeordnet sind. Diese Vererbung und der Polymorphismus machen Go zu einer leistungsstarken objektorientierten Programmiersprache. 🎜🎜Andererseits können Funktionen nicht vererbt werden und sind polymorph. Da sie im Gegensatz zu Methoden unabhängig von einem bestimmten Typ sind, können sie nicht überschrieben werden, um Polymorphismus zu erreichen. 🎜🎜Zusammenfassung🎜🎜Obwohl Funktionen und Methoden beide die gleichen Ergebnisse liefern können, unterscheiden sie sich in ihrer Verwendung und ihrem Design. Methoden können nur mit den zugehörigen Typen aufgerufen werden und weisen die Merkmale Vererbung und Polymorphismus auf. Andererseits werden Funktionen an einer beliebigen Stelle im Code aufgerufen und weisen nicht die Merkmale von Vererbung und Polymorphismus auf. Deshalb berücksichtigen wir beim Schreiben von Code diese Unterschiede, damit wir Methoden oder Funktionen im richtigen Kontext verwenden. 🎜

Das obige ist der detaillierte Inhalt vonUnterschiede in den Funktionen der Golang-Methode. 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
Vorheriger Artikel:So erweitern Sie PHP in GolangNächster Artikel:So erweitern Sie PHP in Golang