1.定义结构
Go
// 定义基础结构
type base struct {
num int //结构成员
}
2.实现结构成员num字段的get与set方法
Go
func (b *base) Num() int {
return b.num
}
func (b *base) SetNum(num int) {
b.num = num
}
3.在新结构中嵌入结构
Go
// 在新结构中嵌入结构
type container struct {
base //嵌入的结构
str string //新结构字段
}
4.base结构实现方法descirbe
Go
// describe:base结构实现方法descirbe
func (b base) describe() string {
return fmt.Sprintf("base with num=%v", b.num)
}
5.使用结构base与container
Go
//使用结构base与container
cb := container{ //初始化结构container
base: base{ //初始化结构base
num: 888, //base结构成员num
},
str: "Hello Container", //container结构成员str
}
fmt.Println("结构Container:", cb)
fmt.Printf("结构Container对象cb={container->base->num: %v, container->str: %v}\n", cb.num, cb.str)
fmt.Println("结构container内嵌结构base的num成员:", cb.base.num)
fmt.Println("结构base的成员方法describe:container->base->describe()", cb.describe())
6.通过接口调用结构实现方法
Go
//临时定义接口
type describer interface {
describe() string //跳到base结构的describe方法
}
fmt.Println("--->describe:", cb.describe()) //调用内嵌结构的describe方法
cb.SetNum(999)
var d describer = cb //调用base结构的SetNum
fmt.Println("===>describer:", d.describe()) //调用接口describer,接口再转到base结构对接口的实现describe方法