今日は「ごもく会 #1」に参加して Go でもくもくしてきた!単にもくもくするだけじゃなくて,エウレカ社のエンジニア(先生)に自由に質問ができたり,Go のライブコーディングが見れたりもして楽しかった.初心者だからライブコーディングは勉強になった!よし次回も参加するぞ!
僕は A Tour of Go がまだ終わってなくて,最後の Concurrency をもくもくしようと思ってたんだけど,ごもく会で出題された「もくもく課題」が楽しそうだったので挑戦してたら A Tour of Go が全然進まなかったw
もくもく課題
特にもくもくする内容が決まってない人はどうぞ!っていう感じで「もくもく課題」が3問出題された.参加側としてこういう課題があるのも凄く良かったなと思う.
中途半端な感じになってるけど,僕の書いたコードは Kakakakakku/playground
に push してある.
課題1
二重ループを回すのも嫌だし,シンプルに書こうと思って strings.Repeat
に頼ったコードを書いた.コードを見てもらったら「良いですねー」って言ってもらえて,一瞬スクリーンに表示されたときは緊張したw
package main import ( "fmt" "strings" ) // * // ** // *** // **** // ***** func main() { for i := 1; i <= 5; i++ { fmt.Printf("%5s\n", strings.Repeat("*", i)) } }
課題2
まず単純な FizzBuzz (gomoku-kai-02-1.go
) を書いた.これじゃ全然面白く無いなーと思って悩んだけどアイデアが出なかった.苦肉の策で書き殴ったコードが gomoku-kai-02-2.go
なんだけど,defer
を使って FizzBuzz をスタックして panic
を起こしたらトリガーされて表示される感じ.まぁ特に意味はないんだけどw
package main import ( "fmt" "strconv" ) func main() { loop := 30 defer func() { if r := recover(); r != nil { fmt.Println("リカバー!", r) } }() for i := loop; i >= 1; i-- { defer fmt.Println(fizzbuzz(i)) } panic("") } func fizzbuzz(i int) string { if i%3 == 0 && i%5 == 0 { return "Fizz Buzz" } else if i%3 == 0 { return "Fizz" } else if i%5 == 0 { return "Buzz" } else { return strconv.Itoa(i) } }
課題3
未完成のままタイムアップになってしまったけど localhost:4000?n=15
のように叩くと FizzBuzz を返すところまでは実装できた.net/http
の理解を深めながら Gin などの FW も試してみたいところ.
package main import ( "fmt" "net/http" "strconv" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { n := r.FormValue("n") i, _ := strconv.Atoi(n) fmt.Fprint(w, fizzbuzz(i)) }) http.ListenAndServe("localhost:4000", nil) } func fizzbuzz(i int) string { if i%3 == 0 && i%5 == 0 { return "Fizz Buzz" } else if i%3 == 0 { return "Fizz" } else if i%5 == 0 { return "Buzz" } else { return strconv.Itoa(i) }
懇親会
結構少人数だったけど,せっかくの機会だしエウレカ社のエンジニア(先生)とお話させて頂いた.Go で Pairs をフルスクラッチした話はノウハウの宝庫って感じだったし,Golint は必須だよ!って話も今後 Go を採用しようと考えている僕にとっては参考になった.
早く簡単なツールでも作ってみて LT でもしたいなー!とモチベーションが上がった.
まとめ
「ごもく会 #2」に参加する!既に人気だから早めに申し込んだ方が良さそう!
今日はありがとうございました!EUREKAGO ステッカーもイイ!