Heim >Backend-Entwicklung >Golang >Lernen Sie die Klassenmethoden und Objektmethoden der Go-Sprache von Grund auf kennen

Lernen Sie die Klassenmethoden und Objektmethoden der Go-Sprache von Grund auf kennen

WBOY
WBOYOriginal
2024-04-03 11:03:02977Durchsuche

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.

Lernen Sie die Klassenmethoden und Objektmethoden der Go-Sprache von Grund auf kennen

Go-Sprache: Klassenmethoden und Objektmethoden von Grund auf lernen

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

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 方法对其进行操作。

关键区别

类方法和对象方法之间的主要区别在于它们的接收器:

  • 类方法有一个隐式的 typerrreee
  • Das obige Beispiel definiert einen Person-Typ und die zugehörige Klassenmethode Greet. Wir können diese Methode direkt mit Person.Greet aufrufen, ohne eine Person-Instanz zu erstellen.
  • Objektmethoden
  • Objektmethoden sind Methoden, die sich auf Klasseninstanzen beziehen. Sie können nur über Instanzen aufgerufen werden, nicht direkt über Klassennamen. In Go deklarieren wir Objektmethoden auch mit dem Schlüsselwort func, aber wir fügen es in den Empfängerabschnitt func der type-Definition ein.
rrreee

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.

🎜Praktischer Fall🎜🎜Das Folgende ist ein Beispiel für ein Go-Programm, das Klassenmethoden und Objektmethoden verwendet: 🎜rrreee🎜In diesem Programm definieren wir einen 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: 🎜
    🎜🎜Klassenmethoden 🎜 haben einen impliziten 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!

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