面试题答案
一键面试package main
import (
"fmt"
)
// 定义父结构体
type Parent struct {
}
// 父结构体的方法
func (p Parent) SayHello() {
fmt.Println("Hello from Parent")
}
// 定义子结构体,嵌入父结构体
type Child struct {
Parent
}
// 子结构体重写父结构体的方法
func (c Child) SayHello() {
fmt.Println("Hello from Child")
}
可以通过以下方式调用:
func main() {
p := Parent{}
p.SayHello()
c := Child{}
c.SayHello()
// 调用嵌入结构体的原始方法
c.Parent.SayHello()
}
在上述代码中:
- 定义了
Parent
结构体及其方法SayHello
。 Child
结构体嵌入了Parent
结构体,从而继承了Parent
的方法。Child
结构体重写了SayHello
方法,当通过Child
实例调用SayHello
时,会执行Child
重写后的方法。- 在
main
函数中,分别展示了父结构体和子结构体实例调用SayHello
方法,同时还展示了通过子结构体实例调用嵌入结构体原始方法的方式。