開発環境
- 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 12(back on your feet - Recovering from Failure)、Code Magnets(356)の解答を求めてみる。
コード
package main import ( "fmt" "log" ) func find(item string, slice []string) bool { for _, sliceItem := range slice { if item == sliceItem { return true } } return false } type Refrigerator []string func (r *Refrigerator) Open() { fmt.Println("Opening refrigerator") } func (r *Refrigerator) Close() { fmt.Println("Closing refrigerator") } func (r *Refrigerator) FindFood(food string) error { r.Open() defer r.Close() if find(food, *r) { fmt.Println("Found", food) } else { return fmt.Errorf("%s not food", food) } return nil } func main() { fridge := Refrigerator{"Milk", "Pizza", "Salsa"} for _, food := range []string{"Milk", "Bananas"} { err := fridge.FindFood(food) if err != nil { log.Fatal(err) } } }
入出力結果(Bash、cmd.exe(コマンドプロンプト)、Terminal)
$ go run sample1.go Opening refrigerator Found Milk Closing refrigerator Opening refrigerator Closing refrigerator 2019/08/12 15:06:59 Bananas not food exit status 1 $
0 コメント:
コメントを投稿