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.
Ü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
的同名方法。
注意:
实战案例
假设我们有一个 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! }
SomeMethod
überschreibt denselben Namen aus der Methode baseStruct
. Hinweis:
🎜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🎜🎜rrreeeDas 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!