Heim  >  Artikel  >  Backend-Entwicklung  >  Wie schreibe ich eine Funktion in Golang um?

Wie schreibe ich eine Funktion in Golang um?

王林
王林Original
2024-04-27 11:15:02462Durchsuche

In Go ermöglicht das Überschreiben von Methoden, Methoden in einer Basisklasse in einer abgeleiteten Klasse neu zu definieren und dabei die gleiche Methodensignatur beizubehalten: Verwenden Sie das Schlüsselwort override. Die überschriebene Methode muss dieselbe Signatur wie die Basismethode haben. Der Empfängertyp der überschriebenen Methode muss ein Untertyp des Basistyps sein.

如何在 golang 中重写函数?

Überschreiben von Funktionen in Go

Durch Überschreiben können wir neue Implementierungen vorhandener Methoden in abgeleiteten Klassen definieren und gleichzeitig die Methodensignatur beibehalten. Dadurch können wir die Funktionalität der Basisklasse erweitern, ohne ihre Schnittstelle zu ändern.

Syntax

Überschreiben in Go verwendet das Schlüsselwort override: override 关键字:

type MyStruct struct {
    baseStruct
}

func (m MyStruct) SomeMethod() {}

SomeMethod 方法将重写来自 baseStruct 的同名方法。

注意:

  • 重写的方法必须具有与被重写的基方法相同的签名。
  • 重写方法的接收者类型必须是基类型的子类型。
  • Go 中没有虚拟方法或动态绑定。

实战案例

假设我们有一个 Animal 基类,具有 Speak 方法:

type Animal struct {
    name string
}

func (a Animal) Speak() {
    fmt.Printf("%s speaks!\n", a.name)
}

我们可以创建一个 Dog 派生类,该类扩展 Speak 方法以吠叫:

type Dog struct {
    Animal
}

func (d Dog) Speak() {
    fmt.Printf("%s barks!\n", d.name)
}

在这里,Dog.Speak 方法重写了 Animal.Speak

package main

import "fmt"

type Animal struct {
    name string
}

func (a Animal) Speak() {
    fmt.Printf("%s speaks!\n", a.name)
}

type Dog struct {
    Animal
}

func (d Dog) Speak() {
    fmt.Printf("%s barks!\n", d.name)
}

func main() {
    a := Animal{name: "Animal"}
    a.Speak() // Output: Animal speaks!

    d := Dog{Animal{name: "Dog"}}
    d.Speak() // Output: Dog barks!
}

Die Methode SomeMethod überschreibt denselben Namen aus der Methode baseStruct .

Hinweis:

🎜
  • Die überschriebene Methode muss dieselbe Signatur haben wie die überschriebene Basismethode.
  • Der Empfängertyp der überschriebenen Methode muss ein Untertyp des Basistyps sein.
  • In Go gibt es keine virtuellen Methoden oder dynamischen Bindungen.
🎜🎜Praktischer Fall🎜🎜🎜Angenommen, wir haben eine Animal-Basisklasse mit einer Speak-Methode: 🎜rrreee🎜Wir können einen Dog abgeleitete Klasse, die die Speak-Methode zum Bellen erweitert: 🎜rrreee🎜Hier überschreibt die Dog.Speak-Methode Animal Methode, die eine hundespezifische Implementierung bereitstellt. 🎜🎜🎜Beispiel🎜🎜rrreee

Das obige ist der detaillierte Inhalt vonWie schreibe ich eine Funktion in Golang um?. 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