面试题答案
一键面试- 访问方式:
- 当一个结构体嵌入另一个结构体时,外部结构体可以直接访问嵌入结构体的字段和方法,就好像这些字段和方法是外部结构体自己的一样。这是因为Go语言的结构体嵌入实现了一种类似继承的行为(但不是传统面向对象语言中的继承)。
- 代码示例:
package main
import "fmt"
// 定义一个基础结构体
type Base struct {
Field1 string
}
// 基础结构体的方法
func (b *Base) Method1() {
fmt.Println("This is Method1 of Base")
}
// 定义一个包含嵌入结构体的外部结构体
type Outer struct {
Base
Field2 int
}
func main() {
o := Outer{
Base: Base{
Field1: "Hello",
},
Field2: 10,
}
// 访问嵌入结构体的字段
fmt.Println(o.Field1)
// 访问嵌入结构体的方法
o.Method1()
}
在上述代码中,Outer
结构体嵌入了Base
结构体。在main
函数中创建Outer
结构体实例o
后,可以直接通过o.Field1
访问嵌入结构体Base
的字段Field1
,通过o.Method1()
访问嵌入结构体Base
的方法Method1
。