Go - ループ:プログラミングにおける繰り返しのマスター
こんにちは、志を抱くプログラマーさんたち!今日は、プログラミングにおける最も基本的な概念のひとつである:ループについて深く掘り下げます。あなたの近所の親切なコンピュータサイエンスの先生として、私はGoのループの魅力的な世界を案内するのがとても楽しみです。信じてください、このチュートリアルの終わりには、プロのようにループを使えるようになるでしょう!
ループとは?
本題に入る前に、まずループとは何かを理解しましょう。例えば、「I love programming」と100回書かなくてはならないという課題があったとします。退屈極まりないでしょう?ここでループが役立ちます!ループを使うことで、同じコードを繰り返し書くことなく、複数回同じ指示を実行することができます。
Goにおけるループの種類
Goは以下の3つの主要なループを提供しています:
- Forループ
- Whileループ(forを使用して実装)
- ランジ 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