Go言語のbreakとcontinueの違いとは?初心者でもわかるループ制御テクニック
生徒
「Go言語でループを途中で止めたり、スキップしたりする方法ってありますか?」
先生
「良い視点ですね。Go言語では、ループ処理を制御するためにbreakとcontinueという2つのキーワードを使います。」
生徒
「どっちがどういう時に使われるんですか?」
先生
「では、これからbreakとcontinueの使い方の違いと、それぞれの具体例を見ていきましょう!」
1. Go言語におけるループ処理とは?
Go言語(Golang)では、同じ処理を繰り返す「ループ処理」がよく使われます。その代表的な構文がfor文です。ループ処理は、例えば「1から10までの数字を順番に表示する」といった場面で活躍します。
ループ中に「この条件なら途中でやめたい」とか「特定の条件だけ飛ばしたい」と思うことがあります。そのときに使えるのがbreakとcontinueです。
2. break文とは?ループを途中で終了する
break(ブレーク)文は、ループ処理を途中で止めて、ループの外に出る命令です。「もうこれ以上続けなくていい」と判断したときに使います。
たとえば、1から10まで数えるけど、5になったら止めたい場合はこうなります。
package main
import "fmt"
func main() {
for i := 1; i <= 10; i++ {
if i == 5 {
break
}
fmt.Println(i)
}
}
上のコードでは、iが5になった瞬間にbreakが実行されて、ループが終了します。
実行結果は以下のようになります。
1
2
3
4
3. continue文とは?特定の処理だけスキップする
continue(コンティニュー)文は、ループの中で「今の回だけ処理を飛ばしたい」というときに使います。ループ自体は続けますが、その回の処理だけ無視されます。
たとえば、1から10まで数えるけど、5だけ表示したくない場合はこう書きます。
package main
import "fmt"
func main() {
for i := 1; i <= 10; i++ {
if i == 5 {
continue
}
fmt.Println(i)
}
}
このコードでは、iが5のときだけfmt.Println(i)が実行されません。
実行結果は以下の通りです。
1
2
3
4
6
7
8
9
10
4. breakとcontinueの違いを図解で理解しよう
初心者の方にとっては、「breakとcontinueの違い」が少しややこしく感じるかもしれません。わかりやすくするために、以下のようなイメージで覚えると良いでしょう。
- break:ループそのものをやめる(完全に終了)
- continue:その回の処理だけスキップして次へ
たとえば、10人に順番に話しかけていたとして、5人目で帰るならbreak。5人目だけ無視して6人目から続けるならcontinueです。
5. ネストされたループ(入れ子)でのbreakとcontinue
Go言語では、ループの中にさらにループを書くこともできます(これを「ネスト」といいます)。このような場合、breakやcontinueは直近のループにだけ作用します。
package main
import "fmt"
func main() {
for i := 1; i <= 3; i++ {
for j := 1; j <= 3; j++ {
if j == 2 {
break
}
fmt.Printf("i=%d, j=%d\n", i, j)
}
}
}
このコードでは、内側のjのループだけがbreakされ、外側のiのループは続きます。
i=1, j=1
i=2, j=1
i=3, j=1
ちなみに、特定のループに対してbreakやcontinueをしたい場合は、「ラベル」を使って制御することもできます(ここでは触れません)。
6. 練習!breakとcontinueを組み合わせる
最後に、breakとcontinueを両方使った例を見てみましょう。1から10までの数をループし、3の倍数はスキップし、7になったらループをやめるという内容です。
package main
import "fmt"
func main() {
for i := 1; i <= 10; i++ {
if i % 3 == 0 {
continue
}
if i == 7 {
break
}
fmt.Println(i)
}
}
この例では、「3の倍数(3,6)」は表示されず、「7」でループが終わります。
1
2
4
5
このようにbreakとcontinueをうまく使うと、処理の流れを柔軟にコントロールできます。初心者の方は最初は混乱するかもしれませんが、実際に手を動かしてみることで、少しずつ慣れていきます。
まとめ
Go言語におけるbreak文とcontinue文は、ループ処理を柔軟に制御するために欠かせない基本テクニックです。とくに、for文での繰り返し処理が多いプログラミングでは、「途中でループを終了したい」「特定の条件だけ飛ばしたい」といった状況が頻繁に発生します。今回の記事では、それぞれの特徴と使い方を丁寧に確認しながら、初心者でも理解しやすい形で具体例を示しました。breakはループ処理そのものを停止する強い制御であり、continueは条件に応じて特定の回だけ処理をスキップできるという柔軟さが特徴です。また、ネストされたループでは内側のループに作用すること、ラベルを付けることで外側のループにも働かせられることなども理解が深まるポイントです。
さらに、実践的なサンプルプログラムを通して、複雑に見える条件分岐でも、breakとcontinueを組み合わせることで自然な処理の流れを作れることがわかりました。たとえば、3の倍数をスキップし、7になったら処理を終了する例では、continueとbreakの役割が直感的に理解できる構造になっています。Go言語の学習では、多くの場面でループが登場するため、これら2つの制御文をきちんと使いこなせるようになることは、コードの可読性と効率を高めるうえでも重要です。
また、実際の開発現場でも、ループの途中で不要な処理を避けたり、判断に応じてすぐにループを抜けたりするケースは多く、breakとcontinueは習得必須の知識となります。今回のまとめでは、検索が多い初心者向けのGo言語キーワードを交えながら、自然な流れで理解を深められるように記述していますので、学習時の振り返りとしても活用できます。ここでは、追加で参考になるサンプルコードをもう一つ掲載し、理解をさらに強固にしていきましょう。
追加サンプルコード:偶数のみを表示し、特定の値で終了する例
package main
import "fmt"
func main() {
for i := 1; i <= 15; i++ {
if i % 2 != 0 {
continue
}
if i == 12 {
break
}
fmt.Println(i)
}
}
このサンプルでは、奇数をスキップしつつ、12に到達したところでループを終了します。continueとbreakの特徴を同時に確認できる、理解促進に最適な構造です。条件分岐と組み合わせていくことで、より複雑なロジックにも対応できるようになります。Go言語の基本構文を身につけたら、このようなループ制御の応用に挑戦することで、プログラムの幅が大きく広がります。ループ処理の制御を理解することは、プログラム全体の品質向上にも繋がるため、大切な学習ステップです。
生徒
「今日の学びで、breakとcontinueの違いがかなりはっきりしました!それぞれの使いどころが理解できました。」
先生
「とても良いですね。Go言語では、ループをどう扱うかでコードの読みやすさも変わるので、この理解は大きな前進ですよ。」
生徒
「continueは処理をスキップ、breakはループ自体を止める、というイメージで覚えたら自然と考え方が整理できました!」
先生
「そう、そのイメージはとても大切です。実際の開発でも頻繁に登場する概念なので、今日覚えたことを忘れないよう、実際に手を動かしながら繰り返し練習していくとさらに身につきますよ。」
生徒
「はい!Go言語のループ処理が楽しくなってきました。breakとcontinueをうまく使えるように、また練習してみます。」