在 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中文網其他相關文章!