開発環境
- 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 can you do? - Interfaces)、Pool Puzzle(339)の解答を求めてみる。
コード
sample2_test.go
package main import "testing" func TestAccelerate(t *testing.T) { want := "Speeding up" got := vehicle.Accelerate() if got != want { t.Errorf("got %v, want %v", got, want) } } func TestSteerLeft(t *testing.T) { want := "Turning left" got := vehicle.Steer("left") if got != want { t.Errorf("got %v, want %v", got, want) } } func TestSteerRight(t *testing.T) { want := "Turning right" got := vehicle.Steer("right") if got != want { t.Errorf("got %v, want %v", got, want) } } func TestBrake(t *testing.T) { want := "Stopping" got := vehicle.Brake() if got != want { t.Errorf("got %v, want %v", got, want) } } func TestLoadCargo(t *testing.T) { want := "Loading test cargo" wantOk := true truckPointer, ok := vehicle.(*Truck) if ok != wantOk { t.Errorf("got %v, want %v", ok, wantOk) } got := truckPointer.LoadCargo("test cargo") if got != want { t.Errorf("got %v, want %v", got, want) } }
sample2.go
package main import "fmt" type Truck string func (t *Truck) Accelerate() string { return "Speeding up" } func (t *Truck) Brake() string { return "Stopping" } func (t *Truck) Steer(direction string) string { return fmt.Sprintf("Turning %s", direction) } func (t *Truck) LoadCargo(cargo string) string { return fmt.Sprintf("Loading %s", cargo) } type Vehicle interface { Accelerate() string Steer(string) string Brake() string } var truck Truck = Truck("Fnord F180") var vehicle Vehicle = &truck func main() {}
入出力結果(Bash、cmd.exe(コマンドプロンプト)、Terminal)
$ go test PASS ok _/.../go/Head_First_Go/ch11/sample2 0.004s $
0 コメント:
コメントを投稿