在 Go 中,方法重写允许在派生类中重新定义基类中的方法,同时保持相同的方法签名:使用 override 关键字。重写方法必须与基方法具有相同的签名。重写方法的接收者类型必须是基类型的子类型。
在 Go 中重写函数
重写允许我们在派生类中定义现有方法的新实现,同时保留方法签名。这使得我们能够扩展基本类的功能,而无需更改其接口。
语法
Go 中的重写使用 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
方法,提供了特定于 Dog 的实现。
示例
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! }
以上是如何在 golang 中重写函数?的详细内容。更多信息请关注PHP中文网其他相关文章!