golang中通过struct组合实现代码复用
package main
import "fmt"
type Car struct {
name string
brand string
}
func (c *Car) getName() string {
return c.name
}
func (c *Car) getBrand() string {
return c.brand
}
func (c *Car) Print() string {
return c.getBrand()+"-"+c.getName()
}
type VWCar struct {
Car
}
func (vwcar *VWCar) getBrand() string {
return "vw"
}
func (vwcar *VWCar) getName() string {
return "toureg"
}
func main() {
vwcar := &VWCar{Car{"polo", "vw"}}
fmt.Println(vwcar.Print())
}
VWCar没有实现Print方法,调用的是Car的Print,对应的数据也是Car的getName和getBrand。所以最后返回的是:
vw-polo