在 Go 中,方法重写允许在派生类中重新定义基类中的方法,同时保持相同的方法签名:使用 override 关键字。重写方法必须与基方法具有相同的签名。重写方法的接收者类型必须是基类型的子
在 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!
}
--结束END--
本文标题: 如何在 golang 中重写函数?
本文链接: https://www.lsjlt.com/news/609774.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-08
2024-05-08
2024-05-08
2024-05-08
2024-05-08
2024-05-08
2024-05-08
2024-05-08
2024-05-08
2024-05-08
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0