開発環境
- 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)、Exercise(333)の解答を求めてみる。
コード
sample1_test.go
package main import "testing" func TestVehicle(t *testing.T) { wants := []string{ "Speeding up", "Turning left", "Stopping", "Turning right", } car := Car("Toyda Yarvic") var vehicle Vehicle = &car gots := []string{ vehicle.Accelerate(), vehicle.Steer("left"), } truck := Truck("Fnord F180") vehicle = &truck gots = append(gots, vehicle.Brake(), vehicle.Steer("right")) for i, want := range wants { got := gots[i] if got != want { t.Errorf("got %v, want %v", got, want) } } }
sample1.go
package main import "fmt" type Car string func (c *Car) Accelerate() string { return "Speeding up" } func (c *Car) Brake() string { return "Stopping" } func (c *Car) Steer(direction string) string { return fmt.Sprintf("Turning %s", direction) } 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 } func main() {}
入出力結果(Bash、cmd.exe(コマンドプロンプト)、Terminal)
$ go test # _/.../go/Head_First_Go/ch11/sample1 [_/.../go/Head_First_Go/ch11/sample1.test] ./sample1_test.go:12:9: undefined: Car ./sample1_test.go:13:14: undefined: Vehicle ./sample1_test.go:18:11: undefined: Truck FAIL _/.../go/Head_First_Go/ch11/sample1 [build failed] $ go test PASS ok _/.../go/Head_First_Go/ch11/sample1 0.004s $
0 コメント:
コメントを投稿