update book code

This commit is contained in:
Unknwon
2015-03-03 12:25:25 -05:00
parent b8c82ba4e5
commit eab1d98ba8
465 changed files with 15392 additions and 1572 deletions

View File

@@ -0,0 +1,59 @@
// 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!
*/