開発環境
- macOS Mojave - Apple (OS)
- Emacs (Text Editor)
- Windows 10 Pro (OS)
- Visual Studio Code (Text Editor)
- Go (プログラミング言語)
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 コメント:
コメントを投稿