golang struct重写

579 阅读1分钟

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