メインコンテンツまでスキップ

Goの繰り返しを理解しよう

Go言語では、繰り返し処理を行うためにfor文を使用します。for文は、他の多くのプログラミング言語で見られるwhiledo-whileループの機能を統合しており、非常に柔軟です。

forループ

Goにはwhileループはありませんが、forループを使って同様の動作を実現できます。 条件式のみを使用したforループは、whileループと同じように動作します。

package main

import (
"fmt"
)

func main() {

index := 0
// indexが10未満の間、繰り返す
for index < 10 {
fmt.Println(index)
// indexを1増やす
index = index + 1
}

}

forループのかき方

効率良いコードを書くために、Goのforループにはいくつかの異なる書き方があります。

初期化、条件、後処理を含むforループ

初期化、継続条件、後処理を一行で書くことができ、これによりコードが簡潔になります。

package main

import (
"fmt"
)

func main() {
// iを0で初期化し、iが10未満の間ループし、各反復でiを1増やす
for i := 0; i < 10; i++ {
fmt.Println(i)
}

}

break文を使ったループの終了

中断したい条件を満たした場合にbreakを呼び出すことで、ループを終了できます。

package main

import (
"fmt"
)

func main() {

for i := 0; i < 10; i++ {
fmt.Println(i)

if i == 5 {
// ここでループを抜ける
break
}
}

fmt.Println("ループを終了しました")

}

continue文を使ったループのスキップ

continue文を使用すると、特定の条件を満たした場合に現在の反復をスキップし、次の反復に進むことができます。

package main

import (
"fmt"
)

func main() {
for i := 0; i < 10; i++ {
if i%2 == 0 {
// 偶数の場合はスキップして次の反復へ
continue
}

fmt.Println(i)
}

}

実行結果:

1
3
5
7
9

練習問題: FizzBuzzを実装しよう

以下の要件を満たすFizzBuzzプログラムをGoで実装してください。

  1. 1〜100までのループを行いながら、以下のように出力します
  2. その数字が3で割り切れる場合、Fizzと出力
  3. その数字が5で割り切れる場合、Buzzと出力
  4. その数字が3でも5でも割り切れる場合、FizzBuzzと出力
  5. それ以外の場合、その数値をそのまま出力

解答例

package main

import (
"fmt"
)

func main() {


for i := 1; i <= 100; i++ {
if i%3 == 0 && i%5 == 0 {
fmt.Println("FizzBuzz")
} else if i%3 == 0 {
fmt.Println("Fizz")
} else if i%5 == 0 {
fmt.Println("Buzz")
} else {
fmt.Println(i)
}
}

}