Go - ループ:プログラミングにおける繰り返しのマスター

こんにちは、志を抱くプログラマーさんたち!今日は、プログラミングにおける最も基本的な概念のひとつである:ループについて深く掘り下げます。あなたの近所の親切なコンピュータサイエンスの先生として、私はGoのループの魅力的な世界を案内するのがとても楽しみです。信じてください、このチュートリアルの終わりには、プロのようにループを使えるようになるでしょう!

Go - Loops

ループとは?

本題に入る前に、まずループとは何かを理解しましょう。例えば、「I love programming」と100回書かなくてはならないという課題があったとします。退屈極まりないでしょう?ここでループが役立ちます!ループを使うことで、同じコードを繰り返し書くことなく、複数回同じ指示を実行することができます。

Goにおけるループの種類

Goは以下の3つの主要なループを提供しています:

  1. Forループ
  2. Whileループ(forを使用して実装)
  3. ランジ basiertなforループ

これらのそれぞれを詳しく見ていきましょう。

1. クラシックなForループ

ForループはGoで最も一般的なループの種類です。それはスイスアーミーナイフのようなものです – 多様で強力です。

package main

import "fmt"

func main() {
for i := 0; i < 5; i++ {
fmt.Println("Iteration:", i)
}
}

この例では:

  • i := 0 はループ変数を初期化します
  • i < 5 は各イテレーション前にチェックされる条件です
  • i++ は各イテレーション後に実行されます

出力:

Iteration: 0
Iteration: 1
Iteration: 2
Iteration: 3
Iteration: 4

2. WhileスタイルのForループ(Goスタイル)

Goには while キーワードはありませんが、forループを使って同じ結果を得ることができます。それはタキシードのTシャツのようで – 正式にはforループですが、機能的にはwhileループです!

package main

import "fmt"

func main() {
count := 0
for count < 3 {
fmt.Println("Count is:", count)
count++
}
}

ここでは、count < 3 が真の間、ループが続きます。

出力:

Count is: 0
Count is: 1
Count is: 2

3. ランジ basiertなForループ

これは私のお気に入りです – データ構造のGPSのようなものです。配列、スライス、マップなどに最適です。

package main

import "fmt"

func main() {
fruits := []string{"apple", "banana", "cherry"}
for index, fruit := range fruits {
fmt.Printf("Fruit at index %d is %s\n", index, fruit)
}
}

このループは自動的に fruits スライスをイテレートし、各イテレーションでインデックスと値を提供します。

出力:

Fruit at index 0 is apple
Fruit at index 1 is banana
Fruit at index 2 is cherry

ループ制御文

基本を理解したので、ループに少しスパイスを加えてみましょう。これらはプログラミングのDJのようなものです – ループパーティの流れをコントロールします!

Breakステートメント

break ステートメントは緊急停止ボタンを押すようなものです。即座にループを終了します。

package main

import "fmt"

func main() {
for i := 0; i < 10; i++ {
if i == 5 {
fmt.Println("We hit 5! Time to break!")
break
}
fmt.Println("Current number:", i)
}
}

このループは i が5に達するとすぐに停止します。

出力:

Current number: 0
Current number: 1
Current number: 2
Current number: 3
Current number: 4
We hit 5! Time to break!

Continueステートメント

continue ステートメントは好き嫌いの曲をスキップするようなものです。次のイテレーションに飛びます。

package main

import "fmt"

func main() {
for i := 0; i < 5; i++ {
if i == 2 {
fmt.Println("Skipping 2!")
continue
}
fmt.Println("Current number:", i)
}
}

このループは i が2のときに表示をスキップします。

出力:

Current number: 0
Current number: 1
Skipping 2!
Current number: 3
Current number: 4

無限ループ

そして最後に、有名な無限ループについて話しましょう。それは決して終わらない一曲のようなものです – 除非それを止めるように指示がなければ、ずっと続きます。

package main

import (
"fmt"
"time"
)

func main() {
count := 0
for {
fmt.Println("This is iteration:", count)
count++
time.Sleep(time.Second)
if count == 5 {
fmt.Println("Okay, that's enough!")
break
}
}
}

このループは終わりがない限り実行されます。この場合、5回のイテレーション後に終了します。

出力:

This is iteration: 0
This is iteration: 1
This is iteration: 2
This is iteration: 3
This is iteration: 4
Okay, that's enough!

ループメソッドの表

ここに、私たちがカバーしたループメソッドの便利な表を示します:

メソッド 説明
Forループ 初期化、条件、ポストステートメントを持つ標準的なループ for i := 0; i < 5; i++ { ... }
WhileスタイルのForループ 条件が真の間に実行されるループ for count < 3 { ... }
ランジ basiertなForループ 配列、スライス、マップなどにイテレートするためのループ for index, value := range collection { ... }
無限ループ 終わりのないループ、除非ブレイクが指示されるまで for { ... }

そして、ここまでがGoプログラミングのループの世界への第一歩です。練習は完璧を生むので、これらの概念を試してみてください。ハッピーコーディングを、そしてあなたのループがいつでも思い通りに終了するよう願っています!

Credits: Image by storyset