Go初心者のforループ入門
ループ処理の基本
Go初心者が最初に直面するのは、繰り返し処理(ループ処理)です。Goでは主に for 文を使ってループを実装します。for 文はC言語に似た構文を持ち、初期化、条件判定、後処理の3つの部分で構成されます。これにより、柔軟に繰り返しを制御できます。
例えば、1から10までの数を出力する基本的なループは次のようになります。
for i := 1; i <= 10; i++ {
fmt.Println(i)
}
この例では、i が初期化され、条件 i <= 10 が満たされる限りループが継続し、i++ によって後処理が行われます。
for文の使い方
Goの for 文は3つの形態があります。
- 典型的なCスタイルのループ(初期化・条件・後処理)
- 条件のみを持つwhile風のループ(初期化と後処理を省略)
- 無限ループ(条件を省略)
無限ループは for {} で書きます。これは永遠に実行されるため、必ず break で抜けるか、外部から停止させる必要があります。
for {
// 何らかの処理
if 条件 {
break
}
}
無限ループはイベントループやタイマー処理で頻繁に使われますが、誤用するとプログラムが停止しなくなる恐れがあります。
rangeとイテレーション
配列・スライス・文字列・マップなどのコレクションをイテレーションする際は range キーワードが便利です。range は要素のインデックスと値を同時に取得できます。
nums := []int{1, 2, 3, 4}
for idx, val := range nums {
fmt.Printf("index %d: value %d\n", idx, val)
}
マップの場合はキーと値を取得します。
m := map[string]int{"a": 1, "b": 2}
for key, val := range m {
fmt.Printf("%s => %d\n", key, val)
}
rangeはイテレーションを簡潔に書ける一方、要素のコピーが発生するため、参照型を扱う場合は注意が必要です。
ループ制御: break, continue, 無限ループ
ループ処理を細かく制御するために break と continue を使います。
- break:現在のループを即座に終了し、ループの外に抜けます。
- continue:現在の反復をスキップし、次の反復へ移ります。
例として、1から20までのうち偶数だけを出力するコードです。
for i := 1; i <= 20; i++ {
if i%2 != 0 {
continue // 奇数はスキップ
}
fmt.Println(i)
}
無限ループと break を組み合わせると、条件が満たされたときにループを抜けるパターンが実現できます。例えば、ユーザー入力を待つチャットボットのメインループは次のようになります。
for {
input := readInput()
if input == "exit" {
break
}
process(input)
}
このように、Go初心者はまず for 文と range を使いこなし、break と continue でループ制御を学ぶことで、効率的かつ安全なコードを書けるようになります。
コメント
コメントを投稿