Go에서 메서드 재정의를 사용하면 동일한 메서드 서명을 유지하면서 기본 클래스의 메서드를 파생 클래스에서 재정의할 수 있습니다. override 키워드를 사용하세요. 재정의된 메서드에는 기본 메서드와 동일한 시그니처가 있어야 합니다. 재정의된 메서드의 수신자 유형은 기본 유형의 하위 유형이어야 합니다.
Go의 함수 재정의
재정의를 사용하면 메서드 시그니처를 유지하면서 파생 클래스에 있는 기존 메서드의 새로운 구현을 정의할 수 있습니다. 이를 통해 인터페이스를 변경하지 않고도 기본 클래스의 기능을 확장할 수 있습니다.
Syntax
Go에서 Overriding은 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
메서드는 baseStruct
메서드와 동일한 이름을 재정의합니다. . 참고:
🎜Speak
메서드가 있는 Animal
기본 클래스가 있다고 가정해 보겠습니다. 🎜rrreee🎜를 만들 수 있습니다. >Dog
짖기 위한 Speak
메서드를 확장하는 파생 클래스: 🎜rrreee🎜여기에서 Dog.Speak
메서드는 Speak
를 재정의합니다. > 메소드, Dog별 구현을 제공합니다. 🎜🎜🎜예🎜🎜rrreee위 내용은 golang에서 함수를 다시 작성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!