| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- // inheritance_car.go
- package main
- import (
- "fmt"
- )
- type Engine interface {
- Start()
- Stop()
- }
- type Car struct {
- wheelCount int
- Engine
- }
- // define a behavior for Car
- func (car Car) numberOfWheels() int {
- return car.wheelCount
- }
- type Mercedes struct {
- Car //anonymous field Car
- }
- // a behavior only available for the Mercedes
- func (m *Mercedes) sayHiToMerkel() {
- fmt.Println("Hi Angela!")
- }
- func (c *Car) Start() {
- fmt.Println("Car is started")
- }
- func (c *Car) Stop() {
- fmt.Println("Car is stopped")
- }
- func (c *Car) GoToWorkIn() {
- // get in car
- c.Start()
- // drive to work
- c.Stop()
- // get out of car
- }
- func main() {
- m := Mercedes{Car{4, nil}}
- fmt.Println("A Mercedes has this many wheels: ", m.numberOfWheels())
- m.GoToWorkIn()
- m.sayHiToMerkel()
- }
- /* Output:
- A Mercedes has this many wheels: 4
- Car is started
- Car is stopped
- Hi Angela!
- */
|