先週からGoデビューしました。(真面目に)なぜ始めたのかは「Vuls」がGoでてきているため、ちょんまげさんに…
とインフラはいいからGoくらいできるようになれよと言われ覚醒しました。(シェルスクリプトとPythonはよく使うけどね!)他にもVulsをじゃんじゃん広めていきたいし、もっとコミットしたい!という理由でもあります。最近Vulsのエバンジェリストになりましたw
ザビエルヘアー必須 https://t.co/E4ig7jEP5z
— バルスの坊主 (@kotakanbe) March 27, 2018
A Tour of Goをやっていますが、飽きてきたのでそろそろfizzbuzzできるか試してみました。
■Want to do
・1~40まで
・3の倍数はVuls!
・3の付く数字はVulssan!
やりたいこととしてはこんな感じ。(世界のナベアツって名前変わったんだっけ)
■vuls3.go
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
package main import ( "fmt" "strings" ) func main() { vuls := "Vuls!" vulssan := "Vulssan!" for i := 1; i <= 40; i++ { if strings.Contains(fmt.Sprint(i), "3") { fmt.Println(vulssan) } else if i%3 == 0 { fmt.Println(vuls) } else { fmt.Println(i) } } } |
とりあえずVuls!,Vulssan!は見やすく変数化してあげましょう。(9~10行目)1~40まではfor文でぶん回します。(12行目)3の付く数字を判定するにはstringsパッケージを使います(5行目)ちなみにContainsは()内に文字列があったらtrueを返してくれるので3をぶち込みます。(13行目)3の倍数はfmtパッケージを使います。(4,15行目)あとはPrintlnで出力するだけです。
・go run vuls3.go
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
$ go run vuls3.go 1 2 Vulssan! 4 5 Vuls! 7 8 Vuls! 10 11 Vuls! Vulssan! 14 Vuls! 16 17 Vuls! 19 20 Vuls! 22 Vulssan! Vuls! 25 26 Vuls! 28 29 Vulssan! Vulssan! Vulssan! Vulssan! Vulssan! Vulssan! Vulssan! Vulssan! Vulssan! Vulssan! 40 |
■おまけ
https://qiita.com/kmagai/items/d6091b6f7bdc721616fc
上記のを改良して使うとかなりバルス感があります。(天空の城ラピュタだね)この場合は無制限で3の倍数ならVuls!、3の付く数字はVulssan!とカオスな実装となっています。strconvパッケージを使って文字列と基本データ型の双方向変換を行っています。
・unlimited-vuls3.go
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
package main import ( "fmt" "strconv" ) func main() { fmt.Print("いくつまでVulsと言わせるんだね!?: ") var input int fmt.Scanf("%d", &input) for i := 1; i <= input; i++ { fizzbuzz(i) } } func ThreeIncluded(num int) bool { var strInt = strconv.Itoa(num) for k := 0; k < len([]rune(strInt)); k++ { if '3' == strInt[k] { return true } } return false } func fizzbuzz(i int) { vuls := "Vuls!" vulssan := "Vulssan!" if ThreeIncluded(i) && i%3 == 0 { fmt.Println(i, vulssan) } else if ThreeIncluded(i) { fmt.Println(i, vulssan) } else if i%3 == 0 { fmt.Println(i, vuls) } else { fmt.Println(i) } } |
■まとめ
みんなもGo言語やろう!基本大事!そしてVulsコミットしよう!上記のプログラムはギッハブに置いとくからみんな試してみてくださいな!
https://github.com/RVIRUS0817/golang_study-plaza/tree/master/fizzbuzz
本3冊買ったからヨム。
参考
http://golang.jp/pkg/strings
http://golang.jp/pkg/fmt
http://golang.jp/pkg/strconv
0件のコメント