【第六回Go言語学習備忘録】FIZZBUZZ!を駆使してif,for,switch文をまるごとマスターしたい!
どもども。最近ジャケットとパーカーばかり買ってしまう、saisaiです。
みなさん、FIZZBUZZ!をご存知でしょうか。
“1~100までの数値を出力し、その中で3で割り切れるものはFIZZ!,5で割り切れるものはBUZZ!,3でも5でも割り切れるならFIZZBUZZ!と出力するコードを書きなさい。"というエンジニア界隈ではあまりにも有名なコーディングテストです。
今回はFIZZBUZZ!を利用してタイトルにある3つの項目について学習しようと思います。
プログラミング素人がやるにはあまりに大変そうですが、頑張りたいと思います!
まずはif文とfor文でFIZZBUZZ!を作成
それではif文とfor文を使用してFIZZBUZZ!を作成していきます。
今回僕が作成してみたコードはこちら。
package main
import "fmt"
func main() {
for i := 1; i <= 100; i++ {
if i%15 == 0 {
fmt.Println("FIZZBUZZ!")
} else if i%3 == 0 {
fmt.Println("FIZZ!")
} else if i%5 == 0 {
fmt.Println("BUZZ!")
} else {
fmt.Println(i)
}
}
}
まずはfor文で1~100までの数字を連続指定し、変数"i"に次々代入するようにします。変数iに初期値(今回は1)を代入し、iの範囲を指定します。"i++" とすることで変数iの値を1ずつ追加していくという処理が可能となります。
for i := 0; i <= 100; i++
そして"i"に代入された値によって条件分岐するようif文を作成します。演算時%は割り算した時の余りを出力することができますので、余りが0の場合を割り切れる場合と定義しました。
if i%15 == 0 { //3でも5でも割り切れる場合
fmt.Println("FIZZBUZZ!")
} else if i%3 == 0 { //3で割り切れる場合(else if)
fmt.Println("FIZZ!")
} else if i%5 == 0 { //5で割り切れる場合(else if)
fmt.Println("BUZZ!")
} else {
fmt.Println(i) //その他の場合(else)
}
}
と言った具合です。
ちなみに、条件は上から順番に参照されるため3でも5でも割り切れるという条件は"必ず一番最初に指定"しておく必要があります。2番目以降に指定すると、他の条件が先に参照されてしまい、期待する数値で"FIZZBUZZ!"と出力することができなくなってしまいます。(ちょっとここでハマったのは秘密)
ちなみにif文には"continue"と"break"というものがあるようです。例えば、
package main
import "fmt"
func main() {
for i := 1; i <= 100; i++ {
if i%3 == 0 {
continue
} else if i == 50 {
break
}
fmt.Println(i)
}
}
//1~49の内、3の倍数を除いて表示
上記のコードは"1~100まで数字を変数"i"に代入し、3で割り切れるものは表示されず、50の段階で強制終了"という処理になります。continueを指定すると、処理をスキップしてfor文に戻ることができます。一方breakを指定した場合は処理をスキップし、さらにfor文自体を抜け出します。
FIZZBUZZ!から少し脱線していますが、for文の挙動に柔軟性を持たせることができそうなので、是非ともマスターしておきたいです。
switch文を使用してみる
switch文を使用して条件分岐処理を定義することもできます。では、FIZZBUZZ!のコードをswitch文で作成するとどうなるのでしょうか。早速コードを書いてみます。
package main
import "fmt"
func main() {
for i := 1; i <= 100; i++ {
switch {
case i%15 == 0:
fmt.Println("FIZZBUZZ!")
case i%3 == 0:
fmt.Println("FIZZ!")
case i%5 == 0:
fmt.Println("BUZZ!")
default:
fmt.Println(i)
}
}
}
個人的にはswitch文の方がシンプルで分かりやすい気がします。基本構造は以下のような感じでしょうか。
switch {
case 条件1:
処理
case 条件2:
処理
・
・
・
default: //その他の処理
処理
}
基本構造さえ理解しておけば、使用しやすそうな感じがしますね!
ひとこと
以上、今回はFIZZBUZZを使用してfor,if,switch文をまるごとマスターしてみようという記事でした。どのサンプルコードでも大体見かける3要素になりますので、しっかり抑えておきたいところです。
ここまで読んでいただきありがとうございました。
-saisai-
↓本日のオススメ