【Go言語学習|初心者向け】Go言語の「continue」でループ処理をスマートに制御しよう

1. 導入:なぜcontinueが必要なのか?

Go言語でプログラミングをしていると、「ある特定の条件のときだけ、今の処理を飛ばして次のループに進みたい」という場面によく遭遇します。例えば、リストの中から偶数だけを処理したい場合、奇数のときは処理をスキップできれば効率的ですよね。そんな時に役立つのがcontinue文です。これを使うことで、複雑なif文のネストを避け、コードを読みやすく保つことができます。

2. 基礎知識:continueの仕組み

continueは、forループの中で使用される制御構文です。この命令が実行されると、その時点で「今回のループの中の残りの処理」をすべて飛ばし、即座に「次のループの先頭(次周)」へジャンプします。

プログラムの実行順序としては、continueに到達した瞬間にループの末尾をスキップして、再度条件判定(または範囲の更新)に戻るイメージです。これにより、特定の条件を満たす要素だけを効率的に選別することができます。

3. 実装と解決策:具体的な使い方

実装の基本はシンプルです。ループ内のif文で条件を指定し、そのブロックの中でcontinueを記述します。

・条件を判定する
・条件に合致したらcontinueでスキップする
・残りの処理を書く

この流れを守ることで、処理対象外のデータをスマートに除外できます。

4. サンプルプログラム

以下のコードは、スライスの数値の中から「奇数をスキップして偶数だけを表示する」プログラムです。コピーして実行してみてください。

package main

import "fmt"

func main() {
    // 数値のリスト(スライス)を定義
    numbers := []int{1, 2, 3, 4, 5, 6}

    for _, n := range numbers {
        // nを2で割った余りが1であれば「奇数」と判断
        if n%2 != 0 {
            // 奇数の場合は、これ以降の処理をスキップして次のループへ進む
            continue
        }

        // ここに到達するのは「偶数」のときだけ
        fmt.Printf("偶数を見つけました: %d\n", n)
    }
}

5. 応用・注意点:現場で陥りやすい罠

実務でcontinueを使う際には、以下の点に注意してください。

・無限ループの危険性
forループの条件更新(i++など)がcontinueの「後ろ」にある場合、continueが実行されると更新処理が飛ばされてしまいます。その結果、無限ループに陥ることがあるので注意しましょう。Goのrangeループであればこの心配はありませんが、古典的なfor i := 0; i < 10; i++形式のループでは注意が必要です。

・ネストの深さに注意
continueを多用しすぎると、逆に処理の流れが追いづらくなることがあります。「この条件なら何もしない」というロジックが多すぎる場合は、そもそも条件式を見直すか、関数に切り出して処理を簡潔にすることを検討してください。

continueを上手に使いこなして、シンプルで美しいGoのコードを書いていきましょう!

コメント

タイトルとURLをコピーしました