Heim > Artikel > Backend-Entwicklung > Lernen Sie die Klassenmethoden und Objektmethoden der Go-Sprache von Grund auf kennen
In Go besteht der Hauptunterschied zwischen Klassenmethoden und Objektmethoden in ihrem Empfänger: Klassenmethoden werden mit dem Klassennamen aufgerufen, während Objektmethoden eine Instanzreferenz erfordern. Klassenmethoden eignen sich für globale Operationen und Objektmethoden eignen sich für bestimmte Instanzoperationen. Schritte: Klassenmethode: Deklaration des Schlüsselworts func, Platzierung in der Typdefinition, und der Empfänger ist die Klasse selbst. Objektmethode: deklariert das Schlüsselwort func und wird im func-Empfängerteil der Typdefinition platziert. Der Empfänger ist ein Instanzzeiger.
In der Go-Sprache können wir Klassenmethoden und Objektmethoden verwenden, um das Verhalten von Objekten zu implementieren. In diesem Artikel werden Sie Schritt für Schritt durch die Unterschiede zwischen den beiden Methoden und deren Verwendung geführt.
Klassenmethoden sind Methoden, die an die Klasse selbst gebunden sind. Sie können direkt über den Klassennamen aufgerufen werden, ohne dass eine Klasseninstanz erstellt werden muss. In Go deklarieren wir eine Klassenmethode mit dem Schlüsselwort func
und platzieren sie in der type
-Definition. func
关键字声明类方法,并将其放在 type
定义中。
type Person struct { Name string } func (p Person) Greet() { fmt.Println("Hello, my name is " + p.Name) }
上面的示例定义了一个 Person
类型和与之关联的 Greet
类方法。我们可以使用 Person.Greet
直接调用此方法,而无需创建 Person
实例。
对象方法是与类实例相关的方法。它们只能通过实例调用,不能通过类名直接调用。在 Go 中,我们也使用 func
关键字声明对象方法,但我们会将其放入 type
定义的 func
接收器部分中。
type Person struct { Name string } func (p *Person) SetName(name string) { p.Name = name }
上面的示例定义了一个 Person
类型和一个名为 SetName
的对象方法。此方法需要一个 Person
指针作为接收器,这意味着它只能通过 Person
实例调用。
以下是一个使用类方法和对象方法的 Go 程序示例:
package main import "fmt" type Person struct { Name string } func (p Person) Greet() { fmt.Println("Hello, my name is " + p.Name) } func (p *Person) SetName(name string) { p.Name = name } func main() { person := Person{Name: "John Doe"} person.Greet() person.SetName("Jane Doe") person.Greet() }
在这个程序中,我们定义了一个 Person
类型及其关联的类方法 Greet
和对象方法 SetName
。我们创建了一个 Person
实例 person
,并使用其 Greet
方法和 SetName
方法对其进行操作。
类方法和对象方法之间的主要区别在于它们的接收器:
type
rrreeePerson
-Typ und die zugehörige Klassenmethode Greet
. Wir können diese Methode direkt mit Person.Greet
aufrufen, ohne eine Person
-Instanz zu erstellen. func
, aber wir fügen es in den Empfängerabschnitt func
der type
-Definition ein. Das obige Beispiel definiert einen Person
-Typ und eine Objektmethode namens SetName
. Diese Methode benötigt einen Person
-Zeiger als Empfänger, was bedeutet, dass sie nur von einer Person
-Instanz aufgerufen werden kann.
Person
-Typ und die zugehörige Klassenmethode Greet
und Objektmethode SetName
. Wir erstellen eine Person
-Instanz person
und bearbeiten sie mit der Methode Greet
und der Methode SetName
. 🎜🎜Hauptunterschiede🎜🎜Der Hauptunterschied zwischen Klassenmethoden und Objektmethoden sind ihre Empfänger: 🎜type
-Empfänger, der es ihnen ermöglicht, den Klassennamen zu übergeben direkt. 🎜🎜🎜Objektmethoden🎜 haben eine Empfängervariable, die ein Zeiger dieses Typs sein muss, wodurch sie nur über Instanzen aufrufbar sind. 🎜🎜🎜Im Allgemeinen eignen sich Klassenmethoden am besten für globale Vorgänge, während Objektmethoden am besten für Vorgänge geeignet sind, die auf eine bestimmte Instanz angewendet werden. 🎜Das obige ist der detaillierte Inhalt vonLernen Sie die Klassenmethoden und Objektmethoden der Go-Sprache von Grund auf kennen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!