| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- // 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!
- */
|