Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk menulis semula fungsi dalam golang?
Dalam Go, kaedah mengatasi membenarkan kaedah dalam kelas asas ditakrifkan semula dalam kelas terbitan sambil mengekalkan tandatangan kaedah yang sama: gunakan kata kunci ganti. Kaedah ganti mesti mempunyai tandatangan yang sama dengan kaedah asas. Jenis penerima kaedah yang diganti mestilah subjenis daripada jenis asas.
Mengatasi fungsi dalam Go
Mengganti membolehkan kami mentakrifkan pelaksanaan baharu kaedah sedia ada dalam kelas terbitan sambil mengekalkan tandatangan kaedah. Ini membolehkan kami memanjangkan fungsi kelas asas tanpa mengubah antara mukanya.
Syntax
Mengatasi dalam Go menggunakan kata kunci 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! }Kaedah
SomeMethod
akan menggantikan nama yang sama daripada kaedah baseStruct
. Nota:
🎜Haiwan
dengan kaedah Speak
: 🎜rrreee🎜Kita boleh mencipta Speak
untuk menyalak: 🎜rrreee🎜Di sini, kaedah Dog.Speak
mengatasi Haiwan
kaedah, menyediakan pelaksanaan khusus Anjing. 🎜🎜🎜Contoh🎜🎜rrreeeAtas ialah kandungan terperinci Bagaimana untuk menulis semula fungsi dalam golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!