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