2019年6月20日木曜日

開発環境

Head First Go (Jay McGavren(著)、O'Reilly Media)のChapter 11(what cna you do? - Interfaces)、Pool Puzzle(339)の解答を求めてみる。

コード

package main

import "fmt"

type Truck string

func (t Truck) Accelerate() {
 fmt.Println("Speeding up")
}
func (t Truck) Brake() {
 fmt.Println("Stopping")
}
func (t Truck) Steer(direction string) {
 fmt.Println("Turning", direction)
}
func (t Truck) LoadCargo(cargo string) {
 fmt.Println("Loading", cargo)
}

type Vehicle interface {
 Accelerate()
 Brake()
 Steer(string)
}

func TryVehicle(vehicle Vehicle) {
 vehicle.Accelerate()
 vehicle.Steer("left")
 vehicle.Steer("right")
 vehicle.Brake()
 truck, ok := vehicle.(Truck)
 if ok {
  truck.LoadCargo("test cargo")
 }
}
func main() {
 TryVehicle(Truck("Fnord F180"))
}

入出力結果(Bash、cmd.exe(コマンドプロンプト)、Terminal)

$ go run sample2.go
Speeding up
Turning left
Turning right
Stopping
Loading test cargo
$ 

0 コメント:

コメントを投稿