面试题答案
一键面试- 调用方法及查找规则解释:
- 在Go语言中,当结构体嵌套时,外层结构体可以直接调用内层结构体的方法。对于
Top
实例调用BaseMethod
,Go语言会按照结构体嵌套的层次从外层到内层查找方法。因为Top
嵌套Middle
,Middle
又嵌套Base
,所以当在Top
实例上调用BaseMethod
时,会先在Top
结构体本身查找是否有BaseMethod
方法,如果没有则会去Top
所嵌套的Middle
结构体中查找,若Middle
结构体中也没有,则会继续去Middle
所嵌套的Base
结构体中查找,找到后就会调用该方法。
- 在Go语言中,当结构体嵌套时,外层结构体可以直接调用内层结构体的方法。对于
- 示例代码:
package main
import "fmt"
// Base结构体定义
type Base struct{}
// BaseMethod是Base结构体的方法
func (b *Base) BaseMethod() {
fmt.Println("This is BaseMethod")
}
// Middle结构体嵌套Base
type Middle struct {
Base
}
// Top结构体嵌套Middle
type Top struct {
Middle
}
- 测试调用代码:
func main() {
t := Top{}
t.BaseMethod()
}
在上述代码中,Top
结构体通过嵌套关系,可以直接调用Base
结构体的BaseMethod
方法。在main
函数中创建Top
的实例t
,然后调用t.BaseMethod()
,即可成功调用Base
结构体的BaseMethod
方法。